我使用helper创建一个新数据库。按照文档所说的,当数据库一创建,oncreate方法就会被调用,但是这个方法没有被准确的调用。
下面是我要实现的代码。
OpenHelper(Context context)
{
super(context, "examplee.db", null, 1 );
SQLiteDatabase sqlite = null;
Log.w(TAG, "Openhelp database, ");
sqlite = context.openOrCreateDatabase("examplee.db", Context.MODE_PRIVATE, null );
Log.e ( TAG,"SQ lite database object "+sqlite );
}
public void onOpen(SQLiteDatabase db)
{
Log.e ( TAG,"On open called ");
}
@Override
public void onCreate(SQLiteDatabase db)
{
Log.w(TAG, " On create ");
//db.execSQL(sql);
//db.execSQL("CREATE TABLE " + TABLE_NAME + "(id INTEGER PRIMARY KEY, name TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
Log.w(TAG, "Upgrading database, this will drop tables and recreate.");
//db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
//onCreate(db);
}
1.除了使用helper,还有别的方法能创建数据库吗?
2.在数据库创建中,什么样的回调函数会被调用然后再被销毁?
下面非常详细的描述如何从模拟器中删除数据库文件(和在一个真正的android手机上调试是非常相似的)。
1.运行模拟器。如果有问题,那么你可以忽略其余的帮助信息!
2.根据您的操作系统,停止一个命令行接口。
3.执行命令:“adb shell”。然后进入Android Debug Bridge;命令会变成像一个简单的英镑符号。不用管原来的操作系统,现在是一个简化的unix操作系统。
4.现在在模拟器中,输入命令‘ls -l'来验证是否在根目录(你将会看到一些非常像一个unix根目录系统的东西)。
5.切换目录到存储的数据库文件。假设你的程序在包com.sillynames。myprogram5中运行,数据库文件被称为“myblackbook.db”。你会发现这个文件在目录: /data/data/com.sillynames.myprogram5/databases/myblackbook.db
中。
6.一旦在那个目录中,就可以通过“rm myblackbook.db”删除数据库。
你说的问题有可能是已经存在了这个数据库,所以数据库的onceat()方法不会再执行了,你在你的文件目录下看看是否有examplee.db这个文件呢!有的话,你手动删除了,然后再运行试一试,可能是以前运行过了,所以没有新建了!
没有,但是不执行oncreate