2012-10-19 47 views
0

我创建了一个类DatabaseInterface它将用于Sqlite操作。 DatabaseInterface.onCreate()(我创建了一个表)当我创建这个类的对象时,方法没有得到执行。使用Sqlite数据库。 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 
} 

}; 

回答

2

数据库是不实际创建直到你DatabaseInterface对象调用getWritableDatabase()

**编辑**

随着新的信息看来,问题是,你的DB已经创建,因此OS不需要执行onCreate,因为它已经创建。要么重新考虑如何创建数据库,以便同时包含表创建,或者只是在不存在的情况下手动插入表。

+0

我以为只有在'openOrCreate'和类似的数据库实际上被创建时。而不是引用。 – Doomsknight

+0

@Martyn我错过了之前我已经调用SQLiteDatabase的insertIntoDB()方法db = this.getWritableDatabase(); – swastican

+0

@Martyn让我试试。谢谢。 – swastican

0

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

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

相关问题