SQLite不在第二表中插入数据 [英] Sqlite not inserting data in 2nd table

查看:56
本文介绍了SQLite不在第二表中插入数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此代码在一个表上工作正常....并附加了文件 现在我要创建两个表,第一个活动是在table1中插入数据...但是第二个活动是不插入数据....没有日志消息.....在调用attach时,它给出了如下所示的日志:

This code was working fine with one table....and was attaching file Now I want to create two tables first activity is inserting data in table1...but second activity is not inserting data....there is no log message........while calling attach it gives log as given below:

      E/SQLiteLog: (1)

我的数据库类是

public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME="GEOTAG.db";
public static final String TABLE_NAME1="Coordinates_table";
public static final String TABLE_NAME2="Form1_table";
public static final String CoL_1="ID";
public static final String CoL_2="LATITUDE";
public static final String CoL_3="LONGITUDE";
public static final String CoL_4="IDForm1";
public static final String CoL_5="Residence";
public static final String CoL_6="Gender";
public static final int DATABASE_VERSION = 3;
public static Context c;
Intent intent =null,chooser=null;
File file =null;
String myFile="Data";
String fpath;
String fileName;
FileOutputStream fileOutputStream=null;

public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    c=context;

}

@Override
public void onCreate(SQLiteDatabase db) {
    try {
        db.execSQL("CREATE TABLE " + TABLE_NAME1 + " (" + CoL_1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " + CoL_2 +" TEXT,"+ CoL_3 +" TEXT)");
        db.execSQL("CREATE TABLE " + TABLE_NAME2 + " (" + CoL_4 + " INTEGER PRIMARY KEY AUTOINCREMENT, " + CoL_5 +" NTEXT,"+ CoL_6 +" NTEXT)");
    } catch (SQLException e) {
        Log.e("HEY","Error creating");
        e.printStackTrace();
    }

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    try{
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME1);
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME2);
    onCreate(db);}
    catch (SQLException e){
        e.printStackTrace();
    }

}




public boolean insertData (String lat,String lng){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues =new ContentValues();
    contentValues.put(CoL_2,lat);
    contentValues.put(CoL_3,lng);

    long res =db.insert(TABLE_NAME1,null,contentValues);
    db.close();
    return res != -1;



}

public boolean insertForm1 (String a,String b){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues =new ContentValues();
    contentValues.put(CoL_5,a);
    contentValues.put(CoL_6,b);


    long res =db.insert(TABLE_NAME2,null,contentValues);
    db.close();
    return res != -1;



}


public void Attach()
{
    int id ;
    String latitude ;
    String longitude ;
    String residence ;
    String gender ;
    SQLiteDatabase db =this.getWritableDatabase();
    String[] columns={CoL_1, CoL_2, CoL_3,CoL_5,CoL_6};
    Cursor cursor1,cursor2;
    cursor1 = db.query(TABLE_NAME1,columns,null,null,null,null,null);
    cursor2 = db.query(TABLE_NAME2,columns,null,null,null,null,null);

    fileName= myFile+"." +"txt";
   // writing file on external storage
    try {
        File sdCard = Environment.getExternalStorageDirectory();
        File dir = new File(sdCard.getAbsolutePath() + "/Files");
        dir.mkdirs();
        if (dir.isDirectory()) {
            String[] children = dir.list();
            for (int i = 0; i < children.length; i++) {
                new File(dir, children[i]).delete();
            }
        }
        file = new File(dir, fileName);
    }
    catch (Exception e){
        e.printStackTrace();
    }



    try {
        fileOutputStream = new FileOutputStream(file);
        fpath = file.toString();

    while (cursor1.moveToNext() ) {
        int index1 = cursor1.getColumnIndex(CoL_1);
        int index2 = cursor1.getColumnIndex(CoL_2);
        int index3 = cursor1.getColumnIndex(CoL_3);
        int index4 = cursor2.getColumnIndex(CoL_5);
        int index5 = cursor2.getColumnIndex(CoL_6);
        id = cursor1.getInt(index1);
        latitude = cursor1.getString(index2);
        longitude = cursor1.getString(index3);
        residence = cursor2.getString(index4);
        gender = cursor2.getString(index5);


            String text1 = Integer.toString(id) + " ";
            String text2 = latitude + " ";
            String text3 = longitude + " ";
            String text4 = residence + " ";
            String text5 = gender + "\n";

            fileOutputStream.write(text1.getBytes());
            fileOutputStream.write(text2.getBytes());
            fileOutputStream.write(text3.getBytes());
            fileOutputStream.write(text4.getBytes());
            fileOutputStream.write(text5.getBytes());




        Toast.makeText(c,"Wait while the file is being attached", Toast.LENGTH_LONG).show();


    }
        Toast.makeText(c,"Ready to Send", Toast.LENGTH_LONG).show();

        fileOutputStream.flush();
        fileOutputStream.close();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        fileOutputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}





}


public void SendData(){
    if(fpath!= null) {
    File targetFile = new File(fpath);
    Uri docUri = Uri.fromFile(targetFile);
        intent = new Intent(Intent.ACTION_SEND);
        intent.putExtra(Intent.EXTRA_STREAM, docUri);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_TEXT, "Attached Data.txt");
        chooser = Intent.createChooser(intent, "Send Email....");
        c.startActivity(chooser);
    }
    else
    {
        Toast.makeText(c,"Please attach file before Sending", Toast.LENGTH_LONG).show();
    }
}


public void reset(){
    SQLiteDatabase db =this.getWritableDatabase();
    db.delete(TABLE_NAME1,null,null);
    db.delete(TABLE_NAME2,null,null);
    Toast.makeText(c,"Resetting Database", Toast.LENGTH_LONG).show();



}

}

我想将来自8个不同活动的数据保存在8个不同的表中,最后读取数据库并通过文本文件发送它……还有其他方法吗?

I want to save data from 8 different activities in 8 different tables and read database in the end and send it through text file...Is there any other way of doing this?.

我已经尝试过,我创建了一个包含5个cloumns的表...第一个活动是在前3列中插入数据,第二个活动是在第4列和第5列中插入数据........但是两行,第一行的最后两列为空值,第二行的前三列为空值.....我要一行而不是两行

What I already tried , I created one table having 5 cloumns...1st activity was inserting data in first 3 columns and 2nd activity was inserting data in 4th and 5th columns........BUT it was creating two rows ,First row having last two columns with null values and Second row having first three columns with null values.....I want one row not two rows

推荐答案

现在可以正常使用

  public boolean update(String Res, String Gen){ SQLiteDatabase db = 
     this.getWritableDatabase(); ContentValues contentValues =new 
  ContentValues(); contentValues.put(CoL_4,Res); contentValues.put(CoL_5,Gen); 
 db.update(TABLE_NAME,contentValues, "Residence = ?",new String[] { "A" }); 
 return true; } 

这篇关于SQLite不在第二表中插入数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆