数据库创建数据库

时间:2010-12-21 10:31:28

标签: android database sqlite

我正在使用Sqlite与android开发和应用程序,可以在将来自定义(对于开发人员)。我创建了一个包含数据的数据库,然后用于为应用程序创建数据库。因此,如果将来需要进行任何更改,或者我将来为其他人编写应用程序,那么我所要做的就是更改此原始数据库。这背后的想法是开发人员的数据库将设置所有UI以及与应用程序有关的一切。

我坚持下一步该做什么我在应用程序中需要数据库作为dev完全填充。我的想法是创建另一个DBHelper类,并在该引用中引用新DB类中的原始DBHelper类和查询。所以这是我尝试从以前的数据库创建数据库的第二个DBHelper类:

public class appDbHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "library.db"; //database name   
    Cursor all, tables, options, ui_type;
    SQLiteDatabase database;

    public appDbHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
        DBHandler databaseHelper = new DBHandler(context);
        database = databaseHelper.getReadableDatabase();
        all = database.rawQuery("SELECT * FROM config", null);
        tables = database.rawQuery("SELECT * FROM table_names", null);
        options = database.rawQuery("SELECT * FROM options", null);
        ui_type = database.rawQuery("SELECT * FROM ui_type", null);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        for(int i=0; i<tables.getCount(); i++){
            tables.moveToPosition(i+1);
            String sql = "";
            for(int j = 0; i < all.getCount(); j++){
                if (all.moveToFirst()) {
                    do{
                        sql = ", " + all.getString(2) + " " + all.getString(5).toUpperCase();
                    }
                    while (all.moveToNext());
                }
            } 
            Log.v("DatabaseSQL", sql);
            database.execSQL( "CREATE TABLE " + tables.getString(1) + "(_id INTEGER PRIMARY KEY AUTOINCREMENT"+sql+");");
        }
    }

但我觉得这不是我需要做的事情的方法。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为你做错了,复杂了。您提供了一个数据库来读取数据,您可以从中轻松创建一些插入,并且您的配置将被实现。

两种解决方案:

  1. 来自我自己的项目:DatabaseAdapter.onCreate()

    在那里你应该看到数据库设置和数据填充数据库。数据本身添加了简单的插入,其中包含基于常量的数据。因此,程序员可以通过更改常量轻松更改数据。

    由此您不必处理2个数据库,您不需要提供另一个数据库并阅读它们。

  2. 由于android支持数据库位置,您也可以跳过这一切,只需打开res / raw或asset文件夹中或sdcard上任何位置提供的sqlite数据库文件。

  3. 我建议采用上述两种方法之一。