簡體   English   中英

使用SQLiteAssetHelper

[英]using SQLiteAssetHelper

MyDatabase類

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;

import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;

public class Mydatabase extends SQLiteAssetHelper{

    private static final String DATABASE_NAME = "databases/mydb.db";
    private static final int DATABASE_VERSION = 1;

    public Mydatabase(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    public Cursor getEmployees() {

        SQLiteDatabase db = getReadableDatabase();
        SQLiteQueryBuilder  qb = new SQLiteQueryBuilder();

        String [] sqlSelect = {"_id", "name", "email"};
        String sqlTables = "contacts";

        qb.setTables(sqlTables);
        Cursor c = qb.query(db, sqlSelect, null, null,
                null, null, null);

        c.moveToFirst();
        return c;

    }

MainActivity類

public class MainActivity extends ListActivity {

    private Cursor employees;
    private MyDatabase db;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        db = new MyDatabase(this);
        employees = db.getEmployees(); // you would not typically call this on the main thread

        ListAdapter adapter = new SimpleCursorAdapter(this, 
                android.R.layout.simple_list_item_1, 
                employees, 
                new String[] {"name"}, 
                new int[] {android.R.id.list});

        getListView().setAdapter(adapter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        employees.close();
        db.close();
    }

}

我想在資產文件夾中連接數據庫,我嘗試從GitHub嘗試此示例,但應用程序停止工作

logcate:致命異常:main java.lang.IllegalStateException:無法執行活動的方法

      Caused by: java.lang.IllegalArgumentException: File databases/mydb.db contains a path separator

任何幫助,請謝謝

我剛剛使數據庫正常工作,但沒有引用數據庫為

   private static final String DATABASE_NAME = "databases/mydb.db";

我按如下方式訪問它:

  private static final String DATABASE_NAME = "mydb.db";

我只是測試了您的方式,並且確定它會破壞它。 因此,刪除database/ ,只有mydb.db ,它應該可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM