Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中添加另一个表并在现有SQLite数据库中插入值?_Android_Sqlite_Android Sqlite - Fatal编程技术网

如何在Android中添加另一个表并在现有SQLite数据库中插入值?

如何在Android中添加另一个表并在现有SQLite数据库中插入值?,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我想在我现有的Sqlite数据库中为我的android应用程序添加另一个表。我已经创建了一个表dailytips,并希望添加另一个表healthytips。我尝试过不同的方法,但没有成功,也做过谷歌搜索,但每一个代码都和我的不同。请找个人来帮我 这是我的密码: package com.example.health; import android.content.ContentValues; import android.content.Context; import android.d

我想在我现有的Sqlite数据库中为我的android应用程序添加另一个表。我已经创建了一个表dailytips,并希望添加另一个表healthytips。我尝试过不同的方法,但没有成功,也做过谷歌搜索,但每一个代码都和我的不同。请找个人来帮我

这是我的密码:

 package com.example.health;

 import android.content.ContentValues;
 import android.content.Context;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteOpenHelper;
 import android.database.sqlite.SQLiteDatabase.CursorFactory;

 public class SQLiteAdapter {

 public static final int DATABASE_VERSION = 2;
 public static final String DATABASE_NAME = "healthDB";

 public static final String TABLE_DAILY = "dailytips";
 public static final String COLUMN_ID = "_id";
 public static final String COLUMN_TIPS = "tips";

 public static final String TABLE_HEALTH="healthytips";
 public static final String COLUMN_H_ID = "_id";
 public static final String COLUMN_H_TIPS = "tips";

 //create table TABLE_DAILY (ID integer primary key, tips text not null);
 private static final String CREATE_TABLE_DAILYS =
 "create table " + TABLE_DAILY + " ("
 + COLUMN_ID + " integer primary key autoincrement, "
 + COLUMN_TIPS + " text not null);";

 //create table TABLE_HEALTHY (ID integer primary key, tips text not null);
 private static final String CREATE_TABLE_HEALTH=
 "create table " + TABLE_HEALTH + " ("
 + COLUMN_H_ID + " integer primary key autoincrement, "
 + COLUMN_H_TIPS + " text not null);";

 private SQLiteHelper sqLiteHelper;
 private SQLiteDatabase sqLiteDatabase;

 private Context context;

 public SQLiteAdapter(Context c){
 context = c;
  }

 public SQLiteAdapter openToRead() throws android.database.SQLException {
 sqLiteHelper = new SQLiteHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
sqLiteDatabase = sqLiteHelper.getReadableDatabase();
return this;
 }

 public SQLiteAdapter openToWrite() throws android.database.SQLException {
 sqLiteHelper = new SQLiteHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
 sqLiteDatabase = sqLiteHelper.getWritableDatabase();
 return this;
 }

 public void close(){
 sqLiteHelper.close();
 }

 public long insert(String tips){

 ContentValues contentValues = new ContentValues();
 contentValues.put(COLUMN_TIPS, tips);
 return sqLiteDatabase.insert(TABLE_DAILY, null, contentValues);
 }

 public int deleteAll(){
 return sqLiteDatabase.delete(TABLE_DAILY, null, null);
 }

 public Cursor queueAll(){
 String[] columns = new String[]{COLUMN_ID, COLUMN_TIPS};
 Cursor cursor = sqLiteDatabase.query(TABLE_DAILY, columns,
   null, null, null, null, null);
 return cursor;
 }

 public class SQLiteHelper extends SQLiteOpenHelper {

 public SQLiteHelper(Context context, String name,
 CursorFactory factory, int version) {
 super(context, name, factory, version);
  }

 @Override
 public void onCreate(SQLiteDatabase db) {
 // TODO Auto-generated method stub
 db.execSQL(CREATE_TABLE_DAILYS);
 db.execSQL(CREATE_TABLE_HEALTH);
  }

 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  // TODO Auto-generated method stub

 }
 }}

在onCreate方法中

    db.execSQL(CREATE_DATABASE_TABLE_1);
    db.execSQL(CREATE_DATABASE_TABLE_2);
在你的程序中更新这个

  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
      // TODO Auto-generated method stub
      // Drop older table if existed

        db.execSQL("DROP TABLE IF EXISTS DATABASE_TABLE_1");
        db.execSQL("DROP TABLE IF EXISTS DATABASE_TABLE_2");

      // Create tables again
      onCreate(db);
     }

注意:在运行应用程序之前需要清除数据库。

我的解决方案是创建一个从SqliteDatabaseHelper派生的数据库帮助程序,并在onCreate方法中向其中添加所有SQL语句,包括新的和旧的以及onUpgrade方法中的SQL语句,所以,下一次无论您是在第一次运行时创建新数据库,还是在升级数据库时,您都将得到所有新的旧表。使用该类仅用于创建或升级db,其余工作将在其他更具体的类中完成,例如

DatabaseHelper-添加代码以创建/升级所有表 Table1Helper-管理table1的方法 Table2Helper-管理table2等的方法


希望这对其他人有所帮助。

您在哪里运行eclipse或android studio代码?卸载您的应用程序,以便删除旧的数据库文件。然后安装并再次运行,以便运行数据库助手onCreate。我们可以在同一个insertYes中同时插入两个不同表的数据吗。您可以并且还可以使用sqliteman检查数据库