如何打开和查询自己的sqlite文件,并使用StickyListHeadersAdapter android在ListView中显示它

时间:2015-06-11 00:59:27

标签: android sqlite listview

嗨我有自己的sqlite文件并放入assets文件夹里面,里面有多个表。我想查询不同的表并在列表视图中显示它。我搜索了不同的教程,但这让我感到困惑,我将如何调用不同的表格?我是否需要为每个表创建数据模型,是否需要在databasehelper中声明每个表?我总是看到教程,你将创建一个数据库,而不是使用自己的数据库。谢谢

1 个答案:

答案 0 :(得分:0)

要使用现有数据库文件(预先填充数据),您可以在github上尝试Android SQLiteAssetHelper

要准备数据库文件,我建议sqliteman

  1. 在sqliteman中创建一个数据库文件,比如" mydatabase",导入数据。您可以在数据库文件中创建多个表。
  2. 将此文件放在Android项目的assets / databases /文件夹中。
  3. 将此文件与SQLiteAssetHelper
  4. 一起使用
      

    我将如何调用不同的表?

    在SQL查询中指定表名,这是一个非常简单的代码,仅供参考。

    public class MyDatabase extends SQLiteAssetHelper {
        private static final String DATABASE_NAME = "mydatabase"; // This is the database file under assets/databases/ folder
    
        private SQLiteDatabase readableDB;
        private SQLiteDatabase writeableDB;
    
        private static MyDatabase instance;
        public static synchronized MyDatabase getInstance(Context context) {
            if (instance == null) {
                instance = new MyDatabase(context);
            }
            return instance;
        }
    
        private MyDatabase(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
            readableDB = getReadableDatabase();
            writeableDB = getWritableDatabase();
        }
    
        // Suppose tableA has two columns, name and id.
        public ArrayList<String> selectNameById(String Id) {
            ArrayList<String> result = new ArrayList<String>();
            String query = "SELECT name FROM tableA WHERE id=?";
            String[] whereArgs = new String[] { Id };
            Cursor cursor = readableDB.rawQuery(query, whereArgs);
    
            if (cursor.moveToFirst()) {
                do {
                    Integer nameIndex = cursor.getColumnIndex("name");
                    String name = cursor.getString(nameIndex);
                    result.add(name);
    
                } while (cursor.moveToNext());
            }
    
            return result;
        }
    }