我正在开发一个应用程序,在其中我创建了一个包含多个表的数据库:
public class Database extends SQLiteOpenHelper {
private static final String DB_NAME = "db";
private static final int DB_VERSION = 1;
public Database(Context context) {
super(context,DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String table = "CREATE TABLE users(";
table += "_id TEXT PRIMARY KEY,";
table += "cat TEXT NOT NULL,";
table += "city TEXT NOT NULL,";
table += "country TEXT NOT NULL,";
table += "addr TEXT,";
String table2 = "CREATE TABLE special(";
table2 += "idspec TEXT PRIMARY KEY);";
String table3 = "CREATE TABLE places(";
table3 += "id TEXT PRIMARY KEY,";
table3 += "text TEXT NOT NULL,";
table3 += "data TEXT NOT NULL,";
table3 += "user TEXT REFERENCES users(_id));";
String table4 = "CREATE TABLE average(";
table4 += "user TEXT PRIMARY KEY,";
table4 += "place INTEGER NOT NULL,";
table4 += "avg REAL NOT NULL);";
db.execSQL(table);
db.execSQL(table2);
db.execSQL(table3);
db.execSQL(table4);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
我想进一步添加包含大约70个条目的表,我将在其他类中阅读。那么,如何添加预填表? 也许,有一种达到同一目的的最好方法,对不起,如果我不知道的话。
答案 0 :(得分:1)
您可以使用SQLiteAssetHelper为您的应用提供预先填充的数据,这里是存储库https://github.com/jgilfelt/android-sqlite-asset-helper的链接 在您的应用中,只需将构造函数称为
即可public Yourclassname(Context context)
{
super(context,Database_Name,null, Database_Version);
}
答案 1 :(得分:1)
在你的onCreate()中,方法只是检查是否没有记录。
即:执行以下查询:
SELECT * FROM users
并检查记录计数是否为0
int count = cur.getCount();
如果count为0,则在交易下执行插入
注意:我将上下文传递给我的函数,我称之为ctx
这是该功能的核心部分
SQLiteDatabase db = null;
try
{
db = ctx.openOrCreateDatabase(DB_NAME, Context.MODE_PRIVATE, null);
// Start the transaction
db.beginTransaction();
// Fill the table
db.execSQL("INSERT INTO users () values ()");
// ... more inserts...
db.setTransactionSuccessful();
}
catch (final SQLiteException se)
{
System.out.println
(
ctx.getClass().getSimpleName() + "\n" +
"Could not import to the database"
);
se.printStackTrace();
result = 0;
}
finally
{
// End the transaction
db.endTransaction();
db.close();
}
<强> [编辑] 强>
然后我读到:I want to add further table
。
这(改变现有的数据库结构)必须在onUpgrade()
方法中完成,将 DATABASE_VERSION 常量设置为更高的值(以便生成onUpgrade()
方法火灾。