0

我创建了一个DatabaseInterface用于 Sqlite 操作的类。 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
}

};
4

2 回答 2

2

直到您在 DatabaseInterface 对象上调用 getWritableDatabase() 后才真正创建数据库

** 编辑 **

有了新信息,问题似乎在于您的数据库已经创建,因此操作系统不需要执行 onCreate,因为它已经创建。重新考虑如何创建数据库以同时包含表创建,或者如果表不存在则手动插入表。

于 2012-10-19T17:09:40.830 回答
0

我有同样的问题。通过在手机模拟器上删除并重新安装应用程序解决了这个问题:

当我第一次执行 db.getWritableDatabase() 时,我的代码中有错误,数据库没有成功创建。如果我在 Android 设备监视器中浏览,App 文件夹下没有 .db 文件,所以我认为在修复我的错误后会调用 OnCreate。——它没有。然后我在模拟器上卸载了该应用程序,并使用正确版本的代码重新安装,调用了 Oncreate 函数并成功创建了 .db 文件。

于 2016-08-01T14:13:43.023 回答