Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中处理多个数据库表时的代码设计_Android_Sqlite - Fatal编程技术网

在Android中处理多个数据库表时的代码设计

在Android中处理多个数据库表时的代码设计,android,sqlite,Android,Sqlite,有些人编写一个包含列名和表名的封闭类,以及一个扩展SqlliteOpenHelper类的静态类。但是,如果数据库中有多个表,它很容易膨胀。Android社区是否遵循任何代码设计来保持与数据库相关的代码干净?我还在学习安卓系统,但我在互联网上找不到。大多数人在教程中只使用一个表,他们并不真正关心这方面。您可以为DB Helper编写单独的类,为每个表编写单独的类。并将所有方法insert/update/delete/get写入这些类中 我给你一个示例代码,它将告诉你如何实现逻辑 助手类 以及与不同

有些人编写一个包含列名和表名的封闭类,以及一个扩展SqlliteOpenHelper类的静态类。但是,如果数据库中有多个表,它很容易膨胀。Android社区是否遵循任何代码设计来保持与数据库相关的代码干净?我还在学习安卓系统,但我在互联网上找不到。大多数人在教程中只使用一个表,他们并不真正关心这方面。

您可以为DB Helper编写单独的类,为每个表编写单独的类。并将所有方法insert/update/delete/get写入这些类中

我给你一个示例代码,它将告诉你如何实现逻辑

助手类

以及与不同类别相关的表格

您可以为DB Helper编写单独的类,并为每个表编写单独的类。并将所有方法insert/update/delete/get写入这些类中

我给你一个示例代码,它将告诉你如何实现逻辑

助手类

以及与不同类别相关的表格


我想实现Helper类separate,并为每个表实现separate类。您能发布一些代码吗我想实现Helper类separate,并为每个表实现separate类。您能发布一些代码吗这是最好的实现,我也将发布相同的答案,但只是有一点不同。我在表相关类中创建帮助器类。你可以称之为DBAdapter+1@VishwasSharma谢谢你这么好的补充感谢您的实施,这是我所看到的最好的。这是最好的实施,我也将发布相同的答案,但只是有一点不同。我在表相关类中创建帮助器类。你可以称之为DBAdapter+1@VishwasSharma谢谢你这么好的补充感谢您的实施,这是我所看到的最好的。
public class DatabaseHelper extends SQLiteOpenHelper {

    private static DatabaseHelper sInstance = null;

    private static final String DATABASE_NAME = "database_name";
    private static final int DATABASE_VERSION = 1;

    public static DatabaseHelper getInstance(Context context) {

        if (sInstance == null) {
            sInstance = new DatabaseHelper(context.getApplicationContext());
        }
        return sInstance;
    }

    /**
     * Constructor should be private to prevent direct instantiation. make call
     * to static factory method "getInstance()" instead.
     */
    private DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(Table1.CREATE_TABLE_TABLE1);
        db.execSQL(Table2.CREATE_TABLE_TABLE2);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // write here for update code

    }
}
public class Table1 {
    private static final String TABLE = "Table_1";  
    public static final String CREATE_TABLE_TABLE1 = "CREATE TABLE "
            + TABLE + " (_id INTEGER PRIMARY KEY, name  TEXT)";

    private Context mContext = null; 

    public Table1(Context mContext) {
        this.mContext = mContext; 
    }

    // And write this Table related stuffs 
    public long insert(String aStringValue) {
        // Here you can get helper as 
        SQLiteDatabase db = DatabaseHelper.getInstance(this.mContext).getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put("name", aStringValue);
        // insert row
        return db.insert(TABLE, null, values);
    }

    public Cursor getAll(String aStringValue) { 
        //TODO Even instead of getting Cursor you can get List.
        // So you have to design some models and fill them into here. 
        // For example you can read at http://www.androidhive.info/2013/09/android-sqlite-database-with-multiple-tables/
        // Read above how to create a Model and use them. 

        String selectQuery = "SELECT  * FROM " + TABLE;
        SQLiteDatabase db = DatabaseHelper.getInstance(this.mContext).getReadableDatabase();
        return db.rawQuery(selectQuery, null);
    }
}

// Same as Table_1 
public class Table2 {
    private static final String TABLE = "Table_2";  
    public static final String CREATE_TABLE_TABLE1 = "CREATE TABLE "
            + TABLE + " (_id INTEGER PRIMARY KEY, name  TEXT)";

    // And write this Table related stuffs 
    // Same as Table 1.
}