簡體   English   中英

從現有的SQLite數據庫Android查詢數據

[英]Query Data from Existing SQLite Database Android

我遵循了本教程: http : //www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/使用SQLite數據庫瀏覽器創建了db,將db文件放在“ assets”文件夾等中。 。

在這里,我的數據庫結構是使用SQLite數據庫瀏覽器創建的,並具有教程鏈接中的說明; 數據庫結構

然后,我將此方法添加到DataBaseHelper類的末尾;

public ArrayList<market> getMarkets() {

    String table = "markets";
    ArrayList<market> markets = new ArrayList<market>();
    market mrkt = new market();

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery("SELECT * FROM " + table, null);

    if(cursor.moveToFirst()) {
        cursor.moveToNext();
        do {
            mrkt.market_id = cursor.getInt(cursor.getColumnIndex("marketid"));
            mrkt.market_name = cursor.getString(cursor.getColumnIndex("name"));
            mrkt.market_telno = cursor.getInt(cursor.getColumnIndex("telno"));
            mrkt.market_location = cursor.getString(cursor.getColumnIndex("location"));
            mrkt.market_hours = cursor.getString(cursor.getColumnIndex("hours"));
            markets.add(mrkt);
        }while(cursor.moveToNext());
    }

    cursor.close();
    db.close();
    return markets;
}

我嘗試在活動類中使用以下幾行在textview上顯示第一市場的信息:

     myDbHelper = new DataBaseHelper(this);
     markets = new ArrayList<market>();

     myDbHelper.createDataBase();
     myDbHelper.openDataBase();
     markets = myDbHelper.getMarkets();

     id.setText(markets.get(0).getMarket_id());
     name.setText(markets.get(0).getMarket_name());
     telno.setText(markets.get(0).getMarket_telno());
     loc.setText(markets.get(0).getMarket_location());
     hours.setText(markets.get(0).getMarket_hours());

但是我得到logcat錯誤:

04-12 23:40:24.477:E / SQLiteLog(30698):(1)沒有這樣的表格:市場

我檢查了數據/數據文件,但沒有我的數據庫文件,我逐行按照教程進行操作,但我不知道為什么我無法正確創建表或sqlite數據庫? 我試過.db,.sqlite3擴展名..如果我錯了,那我的db文件擴展名應該是什么? 請幫忙..

(注意:我的手機上有cyanogenmod 11.0)

我不確定是什么問題,但是這段代碼:

if(cursor.moveToFirst()) {
    cursor.moveToNext();
    do {
        mrkt.market_id = cursor.getInt(cursor.getColumnIndex("marketid"));
        mrkt.market_name = cursor.getString(cursor.getColumnIndex("name"));
        mrkt.market_telno = cursor.getInt(cursor.getColumnIndex("telno"));
        mrkt.market_location = cursor.getString(cursor.getColumnIndex("location"));
        mrkt.market_hours = cursor.getString(cursor.getColumnIndex("hours"));
        markets.add(mrkt);
    }while(cursor.moveToNext());
}

跳過查詢的第一行。 使用cursor.moveToFirst()您已經指向表中的第一行,但是您執行了另外的cursor.moveToNext() ,它跳過了第一行,而轉到了第二行。

您沒有定義表格。 我假設它不是本教程中的內容。 這是一行,它應該在DATABASE_NAME和DATABASE_VERSION之后,並在用於標識列的行之前:

public static final String TABLE_NAME = "markets";

如果您用其他代碼修復它,請告訴我! 我一直在做某事

暫無
暫無

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

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