我需要创建一个包含3个表的数据库,我这样做如下:
public class DatabaseUtils extends SQLiteOpenHelper {
private final Context myContext;
private SQLiteDatabase DataBase;
// Database creation sql statement
private static final String CREATE_TABLE_CS = "create table "+ TABLE_CS + "(" + COLUMN_CS + " TEXT NOT NULL, " + COLUMN_CE_CID + " INTEGER NOT NULL, "+ COLUMN_CE_PID +" INTEGER NOT NULL);";
private static final String CREATE_TABLE_SS = "create table "+ TABLE_SS + "(" + COLUMN_SS + " TEXT NOT NULL, " + COLUMN_SUB_CID + " INTEGER NOT NULL, "+ COLUMN_SUB_PID +" INTEGER NOT NULL);";
private static final String CREATE_TABLE_AS = "create table "+ TABLE_AS + "(" + COLUMN_AS + " TEXT NOT NULL, " + COLUMN_CID + " INTEGER NOT NULL, "+ COLUMN_AID +" INTEGER NOT NULL);";
public DatabaseUtils(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
DATABASE_PATH = Environment.getDataDirectory().getAbsolutePath() + "/" +"data/"+ context.getResources().getString(R.string.app_package);
this.myContext = context;
}
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL(CREATE_TABLE_CS);
database.execSQL(CREATE_TABLE_SS);
database.execSQL(CREATE_TABLE_AS);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(DatabaseUtils.class.getName(),"Upgrading database from version " + oldVersion + " to "+ newVersion + ", which will destroy all old data");
//db.execSQL("DROP TABLE IF EXISTS " + TABLE_COMMENTS);
onCreate(db);
}
}
在我的活动中,我在DatabaseUtils
中拨打onCreate
课程,如下所示:
DatabaseUtils db = new DatabaseUtils(this);
但数据库不是使用3个表创建的。我究竟做错了什么?顺便说一句,我正确地拥有所有字符串值。请帮我看看如何创建数据库。
答案 0 :(得分:5)
我找到了解决方案。 DatabaseUtils
onCreate()
永远不会被调用,如果我实现如下:
DatabaseUtils db = new DatabaseUtils(this);
{p} myActivity
onCreate()
方法中的。我需要在myActivity中调用getWritableDatabase()
,如下所示:
DatabaseUtils db = new DatabaseUtils(this);
db.getWritableDatabase();
然后将调用DatabaseUtils
'onCreate()
并创建表格。
答案 1 :(得分:0)
private void db_ini_create_table(android.database.sqlite.SQLiteDatabase db){
String str_sql = "create table [possible_know_persions] ("+
"[id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"+
"[adate] DATETIME DEFAULT (datetime('now','localtime')) NOT NULL,"+
"[current_userid] INTEGER DEFAULT 0 NOT NULL ,"+
"[stranger_user_id] INTEGER DEFAULT 0 NOT NULL ,"+
"[common_friend_count] INTEGER DEFAULT 0 NOT NULL ,"+
"[common_game_count] INTEGER DEFAULT 0 NOT NULL ,"+
"[user_account_type] INTEGER DEFAULT 0 NOT NULL ,"+
"[verify_type] INTEGER NULL "+
");";db.execSQL(str_sql);
str_sql = "CREATE INDEX [possible_stranger_user_id] on [possible_know_persions] ("+"[stranger_user_id] asc "+");";db.execSQL(str_sql);
}
这是您的参考示例