我想查出 一个名字的  _id  但是 报错 不知道为什么 
// 语音场景方言表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 );");
}
// 查询
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;
}public int getAllDialect(String dialectname) {
Cursor cursor = mDbHelper.fetch_alldialect(dialectname);
int id = cursor.getInt(cursor.getColumnIndex("_id"));
return id;
}int dialectid = didao.getAllDialect(ti);
String did = String.valueOf(dialectid);报错 03-29 16:32:23.245: E/AndroidRuntime(30083): FATAL EXCEPTION: main
03-29 16:32:23.245: E/AndroidRuntime(30083): android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
03-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)不知道 为什么 !数据库 我确定有数据

解决方案 »

  1.   

    你的查询语句不对吧。
    试试这个。
    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);
      

  2.   

    android ORM Lite框架,对象与数据库表的映射。android的 sqlite操作不用写SQL语句 
    请看下我的博客,http://blog.csdn.net/kechanghe0705/article/details/6702890