[英]How to retrieve a column from sqlite and store it into an array?
之前我曾問過這個問題 (經過谷歌搜索后,我閱讀了使用您自己的SQLite數據庫用於Android應用程序 。
因此,我有一個簡單的數據庫,其中包含2列(_id和引號)。 我需要做的是從數據庫中獲取所有引號,並在TextView中將它們一一顯示。
我的DataBaseHelper.java中有這個:
private SQLiteDatabase myDataBase;
public void openDataBase() throws SQLException{
//Open the database
String myPath = DB_PATH + DB_NAME;
myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
Cursor mCursor = myDataBase.query(true, DB_NAME, null, new String[] + "=" + "_id", null,
null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
我該怎么辦? 謝謝
此功能是我從“ db”是數據庫實例的數據庫中獲取數據的方式。 該函數將返回一個二維字符串數組,其中[0] [x]是它提取的第一行,[1] [x]是第二行,依此類推; x是列,在您的情況下,[0] [1]將是數據庫中的第一引號。
public String[][] customQuery(String query) {
Cursor cur = null;
try {
cur = db.rawQuery(query,null);
} catch(SQLException e) {
Log.d("DATABASE", e.toString());
}
String data[][] = new String[cur.getCount()][cur.getColumnCount()];
if (cur != null) {
int i = 0;
while (cur.moveToNext()) {
int j = 0;
while (j < cur.getColumnCount()) {
data[i][j] = cur.getString(j);
j++;
}
i++;
cur.moveToNext();
}
cur.close();
}
return data;
}
Johan的解決方案還可以,但是您應該考慮使用邏輯對象。 表中的大多數行代表一個邏輯對象。 您應該將數據庫行提取到一個對象中,以便可以輕松地使用它們。
Bookmark
對象的示例:
public static List<Bookmark> getBookmarks(SQLiteDatabase db, long emagId) {
List<Bookmark> bookmarksList = null;
Cursor cursor = null;
try {
// WHERE clause for the SELECT query
final String where = Bookmark.EMAG_ID + " = " + emagId;
cursor = db.query(Bookmark.TABLE, new String[] {}, where, null, null, null, null);
bookmarksList = new ArrayList<Bookmark>();
while (cursor.moveToNext()) {
Bookmark bookmark = new Bookmark();
bookmark.id = cursor.getLong(cursor.getColumnIndex(Bookmark.ID));
bookmark.emag_id = cursor.getLong(cursor.getColumnIndex(Bookmark.EMAG_ID));
bookmark.page_number = cursor.getInt(cursor.getColumnIndex(Bookmark.PAGE_NUMBER));
bookmark.article_id = cursor.getLong(cursor.getColumnIndex(Bookmark.ARTICLE_ID));
bookmark.ref_html = cursor.getString(cursor.getColumnIndex(Bookmark.REF_HTML));
bookmark.ref_text = cursor.getString(cursor.getColumnIndex(Bookmark.REF_TEXT));
bookmark.ref_html = bookmark.ref_html;
bookmark.ref_text = "Page: " + bookmark.page_number;
bookmark.resource_id = cursor.getLong(cursor.getColumnIndex(Bookmark.RESOURCE_ID));
bookmark.resource_type = cursor.getInt(cursor.getColumnIndex(Bookmark.RESOURCE_TYPE));
bookmark.source_type = cursor.getInt(cursor.getColumnIndex(Bookmark.SOURCE_TYPE));
bookmark.content_path = cursor.getString(cursor.getColumnIndex(Bookmark.CONTENT_PATH));
bookmarksList.add(bookmark);
}
} catch (Exception e) {
Log.e(LOG_TAG, "::getBookmarksForEmagId", e);
} finally {
if (cursor != null) {
cursor.close();
}
}
return bookmarksList;
}
我在您的問題new String[] + "=" + "_id"
看到了此代碼。 我認為這行不通...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.