我有點難以理解SQLite數據庫如何在android中工作的概念。我創建了一個DatabaseHelper.java類如下:android和java中的SQLite數據庫
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "library.db";
public static final String TITLE = "title";
public static final String MUSICTITLE = "musictitle";
public static final String AUTHOR = "author";
public static final String ARTIST = "artist";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE music (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, artist TEXT);");
db.execSQL("CREATE TABLE books (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, author TEXT);");
db.execSQL("CREATE TABLE movies (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
android.util.Log.v("Constants",
"Upgrading database which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS books");
db.execSQL("DROP TABLE IF EXISTS music");
db.execSQL("DROP TABLE IF EXISTS movies");
onCreate(db);
}
}
據我所知這樣做的工作,利用亞行控制檯得到遏制。
我的問題是如何從不同的活動在應用程序中查詢這個數據庫,例如我想在我的應用程序中查詢數據庫:SELECT title FROM books;這將返回書名中的標題,我該如何去連接數據庫,運行這個查詢然後將所有結果存儲到數組中?
---------------------------------- Edit ----------- -----------------------------
就這樣在我想查詢的部分我已經放置了這段代碼:
if (category.equals("Books")){
img.setImageResource(R.drawable.book);
ArrayList<String> list = new ArrayList<String>();
dh = new DatabaseHelper(this);
SQLiteDatabase db = dh.getReadableDatabase();
Cursor cursor = db.query("books", new String[] { "title" }, null, null, null, null, "title desc");
if (cursor.moveToFirst()) {
do {
list.add(cursor.getString(1));
} while (cursor.moveToNext());
}
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
list.add("Test");
cont_array = (String[]) list.toArray();
db.close();
}
它將類別向下傳遞給前一個活動。來自Olivier的回答。此代碼崩潰的應用程序,我不知道爲什麼。在此if語句之後使用變量cont_array來填充ListView。任何人有任何想法,我錯了,LogCat中沒有什麼能告訴我它失敗的地方?
請不要發佈鏈接而不是答案。相反,發佈答案,如果需要更多解釋,鏈接。這樣,如果鏈接死了,答案仍然可用。 – 2010-12-09 13:28:57
我發佈的鏈接,以避免寫大量的文字 – 2010-12-09 13:33:01