关于查询的问题 想请教一下!
我想查出 一个名字的 _id 但是 报错 不知道为什么
- Java code
// 语音场景方言表tbl_menu_dialect private void initDB_tbl_menu_dialect(SQLiteDatabase paramSQLiteDatabase) { paramSQLiteDatabase .execSQL("CREATE TABLE IF NOT EXISTS tbl_menu_dialect (_id integer primary key autoincrement, menuid integer not null ,dialectname TEXT,audiofile TEXT,version integer not null DEFAULT 0 );"); }- Java code
// 查询 public Cursor fetch_alldialect(String dialectname) { Cursor mcursor = mDb.query(tbl_dialect.DB_NAME, new String[] { tbl_dialect.KEY_ROWID, tbl_dialect.KEY_DIALECTNAME }, "dialectname" + " = '" + dialectname + "'", null, null, null, null); if (mcursor != null) { mcursor.moveToFirst(); } return mcursor; }- Java code
public int getAllDialect(String dialectname) { Cursor cursor = mDbHelper.fetch_alldialect(dialectname); int id = cursor.getInt(cursor.getColumnIndex("_id")); return id; }- Java code
int dialectid = didao.getAllDialect(ti);String did = String.valueOf(dialectid);
报错
- Java code
03-29 16:32:23.245: E/AndroidRuntime(30083): FATAL EXCEPTION: main03-29 16:32:23.245: E/AndroidRuntime(30083): android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 003-29 16:32:23.245: E/AndroidRuntime(30083): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)03-29 16:32:23.245: E/AndroidRuntime(30083): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)03-29 16:32:23.245: E/AndroidRuntime(30083): at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:84)03-29 16:32:23.245: E/AndroidRuntime(30083): at com.eastcom.intelligentanswer.dao.DialectDao.getAllDialect(DialectDao.java:71)03-29 16:32:23.245: E/AndroidRuntime(30083): at com.eastcom.intelligentanswer.ui.Scenese.onClick(Scenese.java:305)03-29 16:32:23.245: E/AndroidRuntime(30083): at android.view.View.performClick(View.java:2538)03-29 16:32:23.245: E/AndroidRuntime(30083): at android.view.View$PerformClick.run(View.java:9152)03-29 16:32:23.245: E/AndroidRuntime(30083): at android.os.Handler.handleCallback(Handler.java:587)03-29 16:32:23.245: E/AndroidRuntime(30083): at android.os.Handler.dispatchMessage(Handler.java:92)03-29 16:32:23.245: E/AndroidRuntime(30083): at android.os.Looper.loop(Looper.java:130)03-29 16:32:23.245: E/AndroidRuntime(30083): at android.app.ActivityThread.main(ActivityThread.java:3691)03-29 16:32:23.245: E/AndroidRuntime(30083): at java.lang.reflect.Method.invokeNative(Native Method)03-29 16:32:23.245: E/AndroidRuntime(30083): at java.lang.reflect.Method.invoke(Method.java:507)03-29 16:32:23.245: E/AndroidRuntime(30083): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)03-29 16:32:23.245: E/AndroidRuntime(30083): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)03-29 16:32:23.245: E/AndroidRuntime(30083): at dalvik.system.NativeStart.main(Native Method)
不知道 为什么 !数据库 我确定有数据
------解决方案--------------------
你的查询语句不对吧。
试试这个。
Cursor mcursor = mDb.query(tbl_dialect.DB_NAME, new String[] {
tbl_dialect.KEY_ROWID, tbl_dialect.KEY_DIALECTNAME },
"dialectname"+"=?",new String[]{"dialectname"}, null, null, null);