读书人

关于查询的有关问题 想请问一下

发布时间: 2012-04-19 14:36:43 作者: rapoo

关于查询的问题 想请教一下!
我想查出 一个名字的 _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);

读书人网 >Android

热点推荐