2012-03-21 96 views
0

我正在使用SQLite为我的应用程序创建数据库表。我在网上搜索,但还没有找到答案:我需要首先创建一个数据库还是有每个应用程序的默认数据库?Android应用程序创建表

我写了下面的DBHelper类。它在一个单独的文件中。如何在应用程序启动时调用它?

public class DataBaseHelper extends SQLiteOpenHelper{ 

    final String CREAT_TABLE = "CREATE TABLE IF NOT EXIST `employee` ("+ 
    "`id` int(11) NOT NULL AUTO_INCREMENT,"+ 
    "`firstName` varchar(30) NOT NULL,"+ 
    "`lastName` varchar(30) NOT NULL,"+ 
    "PRIMARY KEY (`id`)"+ 
    ") ;"; 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(CREAT_TABLE); 
    } 
} 

回答

2

您不必自己创建数据库中声明你的数据库名称。 当您调用打开的帮助程序的superconstructor时,指定数据库名称(sqlite文件名称)。 这将在需要时使用该名称创建或更新数据库(取决于您发送的版本号与当前版本号元数据)。

我不知道你的构造是什么样子,但我们说,它看起来像

public DatabaseHelper(final Context context) { 
    super(context, "mydatabase", null, 0); 
} 

然后SQLiteOpenHelper将创建一个名为“MyDatabase的”数据库,当你调用getReadableDatabase()或getWritableDatabase()。全部在the docs

+0

谢谢。我如何调用这个帮助函数来创建我的主要活动中的表在另一个文件/类? – Yang 2012-03-21 21:25:14

+1

帮手照顾最多。只需重写'public abstract void onCreate(SQLiteDatabase db)'并在那里创建表。如果您想在升级应用程序时支持升级数据库(如果db版本增加),您可能需要在onUpgrade中创建表。如果您不关心旧数据,则可以删除所有表并在onUpgrade中重新创建它们。只要确保在不增加数据库版本并以某种方式处理数据库的情况下不添加表格。否则,由于应用程序升级,当人们缺少表格时,您将会破坏应用程序。 – 2012-03-21 21:28:14

+0

我试图将下面的代码添加到我的主要活动中,但它不起作用。 DataBaseHelper myDbHelper = new DataBaseHelper(this); – Yang 2012-03-21 21:40:37

1

在构造

public DataBaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    }