SQLite rawquery返回游标空对象

SQLite rawquery返回游标空对象,sqlite,cursor,Sqlite,Cursor,这是我的密码。游标对象为空,为什么?有什么建议吗?我觉得rawquery不太好用。。。但RuntimeException在这一行中: defHelper = new DefinitionSQLiteHelper(context, "Definitions", null, 1); db = defHelper.getReadableDatabase(); if (db != null) { //Empezamos a leer de la BD args = new String[]{s+

这是我的密码。游标对象为空,为什么?有什么建议吗?我觉得rawquery不太好用。。。但RuntimeException在这一行中:

defHelper = new DefinitionSQLiteHelper(context, "Definitions", null, 1);
db = defHelper.getReadableDatabase();
if (db != null) { //Empezamos a leer de la BD
    args = new String[]{s+"%"};
    String[]campos=new String[]{"name","meaning"};
    String str = "SELECT * FROM Definitions";

    //SELECT name,meaning FROM Definitions WHERE name LIKE 'p%' ORDER BY name
    //Hago la búsqueda y lo guardo en un objeto Cursor
    c = db.rawQuery(str,null);

    //c.moveToNext();
    //Nos aseguramos de que exista al menos un registro en cursor
    if (c.moveToFirst()) {
        //Recorremos el cursor hasta que no haya más registros
        //Guardar en array de letra
        do {
            //Aquí es donde guardo lo obtenido de la consulta en un array
            def.setPalabra(c.getString(c.getColumnIndex("name")));
            def.setSignificado(c.getString(c.getColumnIndex("name")));
            letraPrimera.add(def);
        } while (c.moveToNext());
    }
}
我的表只有两列,第一列是名称,第二列是含义。两列是字符串。例外情况:

def.setPalabra(c.getString(c.getColumnIndex("name")));
12-07 22:42:07.295 2130-2130/com.example.juan.midccionario E/MessageQueue JNI:java.lang.IndexOutOfBoundsException:索引0无效,大小为0
位于java.util.ArrayList.ThrowindexOutfBoundsException(ArrayList.java:255)
获取(ArrayList.java:308)
在com.example.juan.midccionario.Letter.obtanfirstpage(Letter.java:100)上
在com.example.juan.midccionario.Page上(Page.java:23)
在com.example.juan.midccionario.Search.onQueryTextSubmit(Search.java:127)上
位于android.support.v7.widget.SearchView.onSubmitQuery(SearchView.java:1156)
位于android.support.v7.widget.SearchView.access$900(SearchView.java:101)
位于android.support.v7.widget.SearchView$9.onEditorAction(SearchView.java:1134)
位于android.widget.TextView.doKeyDown(TextView.java:6030)
位于android.widget.TextView.onKeyDown(TextView.java:5911)
位于android.widget.AutoCompleteTextView.onKeyDown(AutoCompleteTextView.java:720)
位于android.view.KeyEvent.dispatch(KeyEvent.java:2640)
在android.view.view.dispatchKeyEvent(view.java:9234)上
在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)上
在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)上
在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)上
在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)上
在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)上
在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)上
在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)上
在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)上
在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)上
在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)上
在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)上
在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)上
在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)上
在com.android.internal.policy.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:2395)上
位于com.android.internal.policy.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1727)
位于android.app.Activity.dispatchKeyEvent(Activity.java:2725)
位于android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:50)
位于android.support.v7.app.AppCompateDelegateImplbase$AppCompateWindowCallBackbase.dispatchKeyEvent(AppCompateDelegateImplbase.java:224)
位于android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:50)
在com.android.internal.policy.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2310)上
在android.view.ViewRootImpl$viewPostimeiInputStage.processKeyEvent(ViewRootImpl.java:4127)中
位于android.view.ViewRootImpl$viewPostimeiInputStage.onProcess(ViewRootImpl.java:4089)
在android.view.ViewRootImpl$InputStage.deliver上(ViewRootImpl.java:3642)
    12-07 22:42:07.295 2130-2130/com.example.juan.midiccionario E/MessageQueue-JNI: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
                                                                                at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
                                                                                at java.util.ArrayList.get(ArrayList.java:308)
                                                                                at com.example.juan.midiccionario.Letter.obtaninFirstPage(Letter.java:100)
                                                                                at com.example.juan.midiccionario.Page.<init>(Page.java:23)
                                                                                at com.example.juan.midiccionario.Search.onQueryTextSubmit(Search.java:127)
                                                                                at android.support.v7.widget.SearchView.onSubmitQuery(SearchView.java:1156)
                                                                                at android.support.v7.widget.SearchView.access$900(SearchView.java:101)
                                                                                at android.support.v7.widget.SearchView$9.onEditorAction(SearchView.java:1134)
                                                                                at android.widget.TextView.doKeyDown(TextView.java:6030)
                                                                                at android.widget.TextView.onKeyDown(TextView.java:5911)
                                                                                at android.widget.AutoCompleteTextView.onKeyDown(AutoCompleteTextView.java:720)
                                                                                at android.view.KeyEvent.dispatch(KeyEvent.java:2640)
                                                                                at android.view.View.dispatchKeyEvent(View.java:9234)
                                                                                at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
                                                                                at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
                                                                                at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
                                                                                at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
                                                                                at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
                                                                                at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
                                                                                at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
                                                                                at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
                                                                                at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
                                                                                at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
                                                                                at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
                                                                                at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
                                                                                at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
                                                                                at com.android.internal.policy.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:2395)
                                                                                at com.android.internal.policy.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1727)
                                                                                at android.app.Activity.dispatchKeyEvent(Activity.java:2725)
                                                                                at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:50)
                                                                                at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:224)
                                                                                at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:50)
                                                                                at com.android.internal.policy.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2310)
                                                                                at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4127)
                                                                                at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4089)
                                                                                at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
                                                                                at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
                                                                                at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
                                                                                at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3787)
                                                                                at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
                                                                                at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3844)
                                                                                at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
                                                                                at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
                                                                                at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
                                                                                at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
                                                                                at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
                                                                                at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
                                                                                at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
                                                                                at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3820)
                                                                                at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3981)
                                                                                at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2253)
                                                                                at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1874)
                                                                                at android.view.inputmethod.InputMethodManager.finishedInputEvent(Input
    //Conectar con la base de datos
        defHelper = new DefinitionSQLiteHelper(context, "Definitions", null, 1);

        db = defHelper.getReadableDatabase();


        if (db != null) //Empezamos a leer de la BD
        {
            //String con la consulta que vamos a hacer, con LIKE que va a indicar que empiece por la letra que acabamos de pasar
            String str = "SELECT name,meaning FROM Definitions WHERE name LIKE '"+s+"%' ORDER BY name";


            //Hago la búsqueda y lo guardo en un objeto Cursor
            c = db.rawQuery(str,null);

            //Nos aseguramos de que exista al menos un registro en cursor
            if (c.moveToFirst()) {

                //Recorremos el cursor hasta que no haya más registros
                //Guardar en array de letra
                do{
                    def = new Definition("","");//Creamos una definición vacía
                    def.setPalabra(c.getString(c.getColumnIndex("name")));
                    def.setSignificado(c.getString(c.getColumnIndex("meaning")));
                    letraPrimera.add(def);
                }while(c.moveToNext());

            }
            c.close();//Cerramos el cursor
            miIndice = 0;//apunto a la primera posición de letraPrimera