【发布时间】:2011-10-11 11:34:35
【问题描述】:
我有一些简单的代码应该创建一个数据库。
package com.webfoo.android.databaseExample;
import android.app.Activity;
import android.os.Bundle;
public class DatabaseExampleActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
jokesHelper db = new jokesHelper(getBaseContext());
}
}
package com.webfoo.android.databaseExample;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class jokesHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "test.db";
private static final int DB_VERSION = 1;
public jokesHelper(Context context) {
super(context, DATABASE_NAME, null, DB_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("create table todo (_id integer primary key autoincrement, "
+ "joke text not null, punch text not null);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
有人知道为什么无法创建数据库吗?我的手机已连接到我的机器并且 SD 未安装,但它处于调试模式(我可以看到我的添加正在我的手机上运行)。
我也没有修改清单,所以这会导致任何问题吗?
谢谢
【问题讨论】:
-
你怎么知道没有创建数据库?你能发布logcat的输出吗?您的助手的
onCreate()中有任何日志语句吗? -
数据库应该保存在
DATA/data/APP_NAME/databases/DATABASENAME吧?好吧,它不存在。 -
@dotty 你有空的 onCreate 函数......创建了没有表的数据库......在你增加 DB_VERSION 之前它不会再次调用(onCreate)
-
对不起,onCreate 不为空。
-
他想说的是
onCreate()通常每次应用程序安装只被调用一次(升级不计算在内)。因此,如果它在开发的早期可能为空时被调用,那么除非您擦除应用程序的数据,否则它不会再次被调用。但是,如果碰到 DB_VERSION,onUpgrade()会被调用。