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);
    }