这是我的数据库助手类:
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
Log.i("Database", "DATABASE CREATE");
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_NAME
+ " VARCHAR NOT NULL, " + KEY_HOTNESS
+ " VARCHAR NOT NULL);"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.i("Database", "DATABASE CREATE");
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
onCreate(db);
}
}
是否有任何方法在您第一次打开应用程序时插入默认数据库条目。喜欢它在onCreate / onUpgrade方法里面吗?
答案 0 :(得分:3)
是的,有可用于在sqlite数据库上手动创建和插入数据的插件。
如果你使用的是mozilla firefox而不是使用这个adons
https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/
安装后,在mozilla firefox Tools->SQLite Manager->And Create Database
手动安装并创建数据库并从那里手动插入记录。创建数据库后,您可以在资源文件夹中放置.sqlite
扩展名的数据库。
在设置资产文件夹后,您可以阅读This Tutorial来读取外部数据库[I.E from .sqlite file put on asset folder]
答案 1 :(得分:3)
File dbFolder=new File("/data/data/yourpackagename/databases/");
if(!dbFolder.exists())
{
dbFolder.mkdirs();
}
File dbFile = new File("/data/data/yourpackagename/databases/"+"dbfilename");
if(!dbFile.exists() || dbFile.length()<=0)
{
dbFile.createNewFile();
InputStream fIn=context.getAssets().open("QuizDB.jpeg");
byte[] buffer =new byte[1024];
FileOutputStream fout=new FileOutputStream(dbFile);
int c=fIn.read(buffer);
while (c!=-1)
{
fout.write(buffer);
c=fIn.read(buffer);
}
fout.close();
将数据库就绪文件保存在资源中,并在启动屏幕后编写上述代码。 我为我的测验应用做了同样的事情。在这我已经有了问题和答案。 所以我用了上面的代码。 QuizDB.jpeg是我的数据库文件名。
SQLiteDatabase sqLiteDatabase;
sqLiteDatabase=dbHelper.getReadableDatabase();
Cursor c = sqLiteDatabase.query("QuizTable1", null, null, null, null, null, null);
if( c.moveToNext() )
{
c.getString(0);
}
上面的代码来读取数据库。 注意:: QuizTable1是我在数据库中创建的表。
答案 2 :(得分:1)
创建表格后,只需将insert
次调用添加到onCreate()
即可。
E.g。
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_NAME
+ " VARCHAR NOT NULL, " + KEY_HOTNESS
+ " VARCHAR NOT NULL);"
ContentValues cv = new ContentValues();
cv.put(KEY_NAME, "name");
cv.put(KEY_HOTNESS, "burning");
db.insert(DATABASE_TABLE, null, cv);
答案 3 :(得分:0)
默认数据库条目的含义。您可以在列之后添加 DEFAULT value
。请详细说明您的问题
答案 4 :(得分:0)
将默认数据库保存在文件中,然后将其加载到onCreate()。
查看this文章。
答案 5 :(得分:0)
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
Log.i("Database", "DATABASE CREATE");
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_NAME
+ " VARCHAR NOT NULL, " + KEY_HOTNESS
+ " VARCHAR NOT NULL);"
);
SQLiteDatabase db=getWritableDatabase();
ContentValues values=new ContentValues();
values.put(KEY_NAME, "name");
values.put(KEY_HOTNESS, "hotness");
db.insert(DATABASE_TABLE, null, values);
db.close();
}