我创建了一个将用于Sqlite操作的类DatabaseInterface
。
DatabaseInterface.onCreate()
(我创建了一个表)当我创建这个类的对象时,方法没有被执行。
我在另一个班级DatabaseInterface
FirstTimeActivity
的对象
public class FirstTimeActivity extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DatabaseInterface db = new DatabaseInterface(this);
}
}
下面是DatabaseInteface
的类定义。 OnCreate()
方法没有被执行,所以我的表没有被创建。数据库已经创建。
public class DatabaseInterface extends SQLiteOpenHelper{
private static String DB_NAME = "SMS_DB";
private static int DB_VERSION = 1;
private String TABLE_NAME = "SENT_ITEMS";
private String COLUMN_ID = "S_NO";
private String COLUMN_MESSAGE = "MESSAGE";
private String COLUMN_DATETIME = "DATE_TIME";
//creates the database
public DatabaseInterface(Context context) {
super(context, DB_NAME, null, DB_VERSION);
Log.d("Creating Database: ", "Creating Database");
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.d("Creating Table: ", "Creating Table");
String create_table = "CREATE TABLE "+ TABLE_NAME + " ("+ COLUMN_ID +" INTEGER PRIMARY KEY, " + COLUMN_MESSAGE + " TEXT, " + COLUMN_DATETIME + "TEXT NOT NULL); ";
db.execSQL(create_table);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void insertIntoDB(String message)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
//get current date and time
Calendar current_time = Calendar.getInstance();
//current_time.getTime();
String Cure = current_time.toString();
Log.d("Current_Date_time: ", Cure);
values.put(COLUMN_MESSAGE, message);
values.put(COLUMN_DATETIME, "ad");
db.insert("TEST", null, values);
db.close(); // Closing database connection
}
};
答案 0 :(得分:2)
在DatabaseInterface对象上调用getWritableDatabase()之前,实际上并未创建数据库
**编辑**
使用新信息似乎问题是您的数据库已经创建,因此操作系统不需要执行onCreate,因为它已经创建了。要么重新考虑如何创建数据库以同时包含表创建,要么只是手动插入表(如果不存在)。
答案 1 :(得分:0)
我遇到了同样的问题。通过在手机模拟器上删除并重新安装应用程序解决了这个问题:
第一次执行db.getWritableDatabase()时,我的代码中出现了错误,数据库没有成功创建。如果我在Android设备监视器中浏览,App文件夹下没有.db文件,所以我想在修复我的bug后会调用OnCreate。 - 它没有。然后我在模拟器上卸载了应用程序,并使用正确版本的代码重新安装,调用了Oncreate函数并成功创建了.db文件。