Android Sqlite未在第二个表中插入数据
此代码在一个表中运行良好…并正在附加文件 现在我想创建两个表第一个活动是在表1中插入数据…但第二个活动不是插入数据…没有日志消息…。在调用attach时,它给出的日志如下所示:Android Sqlite未在第二个表中插入数据,android,android-sqlite,Android,Android Sqlite,此代码在一个表中运行良好…并正在附加文件 现在我想创建两个表第一个活动是在表1中插入数据…但第二个活动不是插入数据…没有日志消息…。在调用attach时,它给出的日志如下所示: E/SQLiteLog: (1) 我的数据库类是 public class DatabaseHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME="GEOTAG.db"; public static final
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();
}
}
public类DatabaseHelper扩展了SQLiteOpenHelper{
公共静态最终字符串数据库\u NAME=“GEOTAG.db”;
公共静态最终字符串表\u NAME1=“坐标表”;
公共静态最终字符串表\u NAME2=“Form1\u TABLE”;
公共静态最终字符串CoL_1=“ID”;
公共静态最终字符串CoL_2=“纬度”;
公共静态最终字符串CoL_3=“经度”;
公共静态最终字符串CoL_4=“IDForm1”;
公共静态最终字符串CoL_5=“住宅”;
公共静态最终字符串CoL_6=“性别”;
公共静态最终int数据库_版本=3;
公共静态语境c;
Intent=null,chooser=null;
File=null;
字符串myFile=“Data”;
字符串fpath;
字符串文件名;
FileOutputStream FileOutputStream=null;
公共数据库助手(上下文){
super(上下文、数据库名称、null、数据库版本);
c=上下文;
}
@凌驾
public void onCreate(SQLiteDatabase db){
试一试{
db.execSQL(“创建表”+TABLE_NAME1+”(“+CoL_1+”整数主键自动递增,“+CoL_2+”文本,“+CoL_3+”文本)”);
db.execSQL(“创建表”+TABLE_NAME2+”(“+CoL_4+”整数主键自动递增“+CoL_5+”NTEXT“+CoL_6+”NTEXT)”);
}捕获(SQLE异常){
Log.e(“嘿”,“创建错误”);
e、 printStackTrace();
}
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
试一试{
db.execSQL(“如果存在删除表”+表名称1);
db.execSQL(“如果存在删除表”+表名称2);
onCreate(db);}
捕获(SQLE异常){
e、 printStackTrace();
}
}
公共布尔插入数据(字符串lat、字符串lng){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues ContentValues=新ContentValues();
contentValues.put(CoL_2,lat);
含量值。投入(第3列,液化天然气);
long res=db.insert(表1,null,contentValues);
db.close();
返回res!=-1;
}
公共布尔insertForm1(字符串a、字符串b){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues ContentValues=新ContentValues();
contentValues.put(列5,a);
contentValues.put(CoL_6,b);
long res=db.insert(TABLE_NAME2,null,contentValues);
db.close();
返回res!=-1;
}
公共图书馆(附页)
{
int-id;
弦纬度;
弦经度;
弦住宅;
字符串性别;
SQLiteDatabase db=this.getWritableDatabase();
String[]columns={CoL_1、CoL_2、CoL_3、CoL_5、CoL_6};
游标游标1、游标2;
cursor1=db.query(表名称1,列,null,null,null,null,null);
cursor2=db.query(表2,列,null,null,null,null,null);
fileName=myFile+“+”txt”;
//在外部存储器上写入文件
试一试{
文件sdCard=Environment.getExternalStorageDirectory();
File dir=新文件(sdCard.getAbsolutePath()+“/Files”);
dir.mkdirs();
if(dir.isDirectory()){
String[]children=dir.list();
for(int i=0;i
我想将来自8个不同活动的数据保存在8个不同的表中,并最终读取数据库并发送出去
ContentValues cv = new ContentValues();
cv.put("Field1","value"); //These Fields should be your String values of
myDB.update(TableName, cv, "_id="+id, null);
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; }