如何在Android中添加另一个表并在现有SQLite数据库中插入值?
我想在我现有的Sqlite数据库中为我的android应用程序添加另一个表。我已经创建了一个表dailytips,并希望添加另一个表healthytips。我尝试过不同的方法,但没有成功,也做过谷歌搜索,但每一个代码都和我的不同。请找个人来帮我 这是我的密码:如何在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
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检查数据库