我正在创建一个数据库,我需要从数据库中读取所有记录,但是我的程序一直在崩溃:
newWord= db.getAllRecords();
我认为getAllRecords()存在问题,因为Eclipse表示没有错误。
public Cursor getAllRecords() {
db = dBHelper.getWritableDatabase();//obtains the writable database
return db.query(DATABASE_TABLE, new String[] { KEY_ROWID,KEY_WORD}, null, null, null, null, null);//the query used to obtain all records form the table
}
有什么想法吗?
答案 0 :(得分:14)
以下是我从表中获取所有内容的方法..
public ArrayList<MyObject> getAllElements() {
ArrayList<MyObject> list = new ArrayList<MyObject>();
// Select All Query
String selectQuery = "SELECT * FROM " + MY_TABLE;
SQLiteDatabase db = this.getReadableDatabase();
try {
Cursor cursor = db.rawQuery(selectQuery, null);
try {
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
MyObject obj = new MyObject();
//only one column
obj.setId(cursor.getString(0));
//you could add additional columns here..
list.add(obj);
} while (cursor.moveToNext());
}
} finally {
try { cursor.close(); } catch (Exception ignore) {}
}
} finally {
try { db.close(); } catch (Exception ignore) {}
}
return list;
}
答案 1 :(得分:2)
public void printTableData(String table_name){
SQLiteDatabase db = getReadableDatabase();
Cursor cur = db.rawQuery("SELECT * FROM " + table_name, null);
if(cur.getCount() != 0){
cur.moveToFirst();
do{
String row_values = "";
for(int i = 0 ; i < cur.getColumnCount(); i++){
row_values = row_values + " || " + cur.getString(i);
}
Log.d("LOG_TAG_HERE", row_values);
}while (cur.moveToNext());
}
}
答案 2 :(得分:0)
Initialize TABLE:
private static String TABLE="your_table_name";
要获取所有记录的列表,请将以下方法写入数据库类:
public ArrayList<RecentStickerModel> getAllRecentRecords() {
ArrayList<RecentStickerModel> listStickers = new ArrayList<>();
SQLiteDatabase db = getWritableDatabase();
String q = "SELECT name from sqlite_master WHERE type='table' AND name='" + TABLE + "'";
Cursor cursorTable = db.rawQuery(q, null);
if (cursorTable != null && cursorTable.moveToFirst()) {
String tableName = cursorTable.getString(0);
cursorTable.close();
if (TABLE.equals(tableName)) {
String query = "Select * from " + TABLE ;
Cursor cursor = db.rawQuery(query, null);
if (cursor != null && cursor.moveToFirst()) {
Logger.e(TAG, "cursor size:" + cursor.getCount());
int catNameCI = cursor.getColumnIndex(KEY_CAT_NAME);
int imagePathCI = cursor.getColumnIndex(KEY_IMAGE_PATH);
int lastStickerTimeCI = cursor.getColumnIndex(KEY_LAST_STICKER_TIME);
do {
RecentStickerModel model = new RecentStickerModel();
model.setCatName(cursor.getString(catNameCI));
model.setImgStickerPath(cursor.getString(imagePathCI));
model.setLastStickerTime(cursor.getString(lastStickerTimeCI));
listStickers.add(model);
} while (cursor.moveToNext());
cursor.close();
}
}
db.close();
}
return listStickers;
}
然后在您想要的地方调用以下方法:
arrayListRecent=stickersListDatabase.getAllRecentRecords();
答案 3 :(得分:-1)
Cursor c = ourDatabase.rawQuery("SELECT * FROM table_name", null);
if(c!=null){
c.moveToFirst();
}
return c;