gpt4 book ai didi

android - 不从 Sqlite 数据库表中获取数据

转载 作者:行者123 更新时间:2023-11-29 17:56:39 26 4
gpt4 key购买 nike

我正在开发 android 应用程序,我想在其中从 Sqlite 数据库表中获取数据。

即使数据存在于表中,它也会给我错误。

代码:

 public List<Mikats> getAllMikats() {
List<Mikats> contactList = new ArrayList<Mikats>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_NAME_2;

SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);

// looping through all rows and adding to list
//cursor.moveToFirst()
int rows=cursor.getCount();
if (rows>0) {
do {
Mikats mikat = new Mikats();

int mid=cursor.getInt(1);
String sqlectEventTitle="select * from "+ TABLE_NAME_1 +" where "+ KEY_MID+" = "+mid;
SQLiteDatabase db2 = this.getWritableDatabase();
Cursor cursor1=db2.rawQuery(sqlectEventTitle, null);
if(cursor1.moveToNext())
{
String Title=cursor1.getString(cursor1.getColumnIndex("EventTitle"));
mikat.setEventTitle(Title);
}
mikat.setEjamatID(Integer.parseInt(cursor.getString(0)));

mikat.setMikatID(Integer.parseInt(cursor.getString(1)));

mikat.setStartDate(cursor.getString(2));

mikat.setEndDate(cursor.getString(3));

mikat.setBlock(cursor.getString(4));


mikat.setFloor(cursor.getString(5));

mikat.setGate(cursor.getString(6));

String masjid=cursor.getString(7);
mikat.setMasjid(masjid);

mikat.setAutoID(Integer.parseInt(cursor.getString(8)));

mikat.setSeatNo(cursor.getString(9));

// Adding contact to list
contactList.add(mikat);
} while (cursor.moveToNext());
}

// return contact list
return contactList;
}

错误行:

int mid=cursor.getInt(1);

日志:

09-17 11:51:57.904: W/System.err(19441): android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
09-17 11:51:57.904: W/System.err(19441): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
09-17 11:51:57.904: W/System.err(19441): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
09-17 11:51:57.914: W/System.err(19441): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:41)
09-17 11:51:57.924: W/System.err(19441): at com.example.busahebaapp.MikatHandler.getAllMikats(MikatHandler.java:113)
09-17 11:51:57.924: W/System.err(19441): at com.example.busahebaapp.ViewEvents.onCreate(ViewEvents.java:57)
09-17 11:51:57.934: W/System.err(19441): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-17 11:51:57.944: W/System.err(19441): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
09-17 11:51:57.944: W/System.err(19441): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
09-17 11:51:57.944: W/System.err(19441): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
09-17 11:51:57.954: W/System.err(19441): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
09-17 11:51:57.964: W/System.err(19441): at android.os.Handler.dispatchMessage(Handler.java:99)
09-17 11:51:57.974: W/System.err(19441): at android.os.Looper.loop(Looper.java:123)
09-17 11:51:57.974: W/System.err(19441): at android.app.ActivityThread.main(ActivityThread.java:3683)
09-17 11:51:57.984: W/System.err(19441): at java.lang.reflect.Method.invokeNative(Native Method)
09-17 11:51:57.994: W/System.err(19441): at java.lang.reflect.Method.invoke(Method.java:507)
09-17 11:51:57.994: W/System.err(19441): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-17 11:51:58.004: W/System.err(19441): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-17 11:51:58.004: W/System.err(19441): at dalvik.system.NativeStart.main(Native Method)
09-17 11:53:24.805: W/jdwp(19441): Debugger is telling the VM to exit with code=1

请帮助我,我不明白错误的原因。

我已确保表中存在数据。

enter image description here

最佳答案

只需更改一下:

if (rows>0) {

cursor.moveToFirst();

do{

// get data here from database...

}while(cursor.moveToNext());

}

而且当你的光标第一次移动到第一个位置时,它不为空并且它的计数必须> 0 ..并且值必须从 0 开始而不是从 1 开始......所以改变

int mid=cursor.getInt(0);

关于android - 不从 Sqlite 数据库表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18842812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com