Java 在onCreate方法上插入默认数据库项
以下是我的数据库助手类:Java 在onCreate方法上插入默认数据库项,java,android,database,sqlite,Java,Android,Database,Sqlite,以下是我的数据库助手类: public DbHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) {
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方法中一样?您所说的默认数据库条目是什么意思。您可以在列后面添加默认值。请详细说明您的问题,默认数据库条目是什么意思。您可以在列后添加默认值。请详细说明您的问题。将默认数据库保存在文件中,然后将其加载到onCreate()中
检查文章。将默认数据库保存在文件中,然后将其加载到onCreate()中
检查文章。是的,有插件可用于在sqlite数据库上手动创建和插入数据 如果您使用的是mozilla firefox,请不要使用此adons 安装后在mozilla firefox上打开它并创建数据库 安装并手动创建数据库,然后从中手动插入记录。创建数据库后,您可以将扩展名为
.sqlite
的数据库放在资产文件夹中
放入资产文件夹后,您可以从外部数据库读取记录。
[即从.sqlite文件放入资产文件夹]
是的,有一个插件可用于在sqlite数据库上手动创建和插入数据
如果您使用的是mozilla firefox,请不要使用此adons
安装后在mozilla firefox上打开它并创建数据库
安装并手动创建数据库,然后从中手动插入记录。创建数据库后,您可以将扩展名为.sqlite
的数据库放在资产文件夹中
在放入资产文件夹后,您可以从外部数据库读取记录。
[即从.sqlite文件放入资产文件夹]
创建表后,只需添加任何insert
调用即可
例如
创建表后,只需将任何
insert
调用添加到onCreate()
例如
是的,这是可能的。在助手类的onCreate方法中插入默认值
@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();
}
是的,这是可能的。在助手类的onCreate方法中插入默认值
@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();
}
上面的代码读取数据库。
注意::QuizTable1是我在数据库中创建的表
上面的代码读取数据库。
注意::QuizTable1是我在数据库中创建的表 您的意思是说应该在应用程序的每次启动时执行
db.qxecSQL()
语句吗?是的,但我只知道如何使用db.insert();不是db.qxecSQL();它像mysql_query()吗;在php中?您的意思是说应该在应用程序的每次启动时执行db.qxecSQL()
语句吗?是的,但我只知道如何使用db.insert();不是db.qxecSQL();它像mysql_query()吗;在php中?问题在哪里?即使您从onCreate()以外的方法获得db的引用,它仍然是同一个SQLiteOpenHelper类的同一个变量。:)啊,由于缩进,起初没有看到getWritableDatabase()
调用。Sry。但这仍然是不必要的,因为db
已经开放供编写。问题出在哪里?即使您从onCreate()以外的方法获得db的引用,它仍然是同一个SQLiteOpenHelper类的同一个变量。:)啊,由于缩进,起初没有看到getWritableDatabase()
调用。Sry。但这仍然是不必要的,因为db
已经开放供编写。这是我遇到的最有效的答案,但我不知道如何在java中使用缓冲区读取器。你可以在Oracle网站上查阅java文档,但为什么你需要知道缓冲区?通过使用以上代码,您可以创建数据库。要阅读数据库,我已经编辑了文章。请转介。如果这个答案有帮助,请接受这个答案。这是我遇到的最有效的答案,但我不知道如何在java中使用缓冲区读取器。你可以在Oracle网站上查阅java文档,但为什么你需要知道缓冲区?通过使用以上代码,您可以创建数据库。要阅读数据库,我已经编辑了文章。请转介。如果这个答案有帮助,请接受这个答案。如果我输入60个默认条目可以吗?我知道这样做效率很低,但我还是想问一下。@ChristianBurgos不应该是个问题onCreate()
已经在数据库事务中运行,因此等待I/O的时间被最小化。即使我在数据库中添加了一些额外的内容,这会被节省吗?如果我添加60个默认条目是否可以?我知道这样做效率很低,但我还是想问一下。@ChristianBurgos不应该是个问题onCreate()
已经在数据库事务中运行,因此等待I/O的时间被最小化。即使我在数据库中添加了一些额外的内容,这会被节省吗?
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();
SQLiteDatabase sqLiteDatabase;
sqLiteDatabase=dbHelper.getReadableDatabase();
Cursor c = sqLiteDatabase.query("QuizTable1", null, null, null, null, null, null);
if( c.moveToNext() )
{
c.getString(0);
}