public class SampleDB extends SQLiteOpenHelper
{
public static final String DATABASE_NAME = "sample.db";
public static final String TABLE_NAME = "student_table";
public static final String COL_1 = "id";
public static final String COL_2 = "name";
public SampleDB(Context context)
{
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL("CREATE TABLE "+ TABLE_NAME + " ( " +
COL_1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COL_2 + " TEXT)"
);
insertData(1,"abc");
insertData(2,"def");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
onCreate(db);
}
public void insertData(int id, String name)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(COL_1,id);
cv.put(COL_2,name);
db.insert(TABLE_NAME,null,cv);
}
}
我想念什么吗?我已经在MainActivity的onCreate()中编写了以下代码。
SampleDB mydb = new SampleDB(this);
P.S:当我不调用insert并在构造函数中写入getWritableDatabase()时,将创建空数据库架构。
答案 0 :(得分:0)
来自https://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper
在调用getWritableDatabase()或getReadableDatabase()之一之前,实际上不会创建或打开数据库。
已更新:
一些有关此类问题的一般指导:-
在开发和更改数据库代码时,值得一提的是,通过重置数据库进行测试时,始终从已知的角度出发。这可以通过以下方式完成:-
或