在onCreate方法上插入默认数据库条目

时间:2013-12-02 12:41:41

标签: 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) {
            // 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方法里面吗?

6 个答案:

答案 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)

是的,可能的。在助手类的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();

        }