Неверный запрос на слот поля 0,-1. число строк = 1, число столбцов = 1

Я продолжаю получать это в своем логарифме каждый раз, когда запускаю свой код, и не могу понять, как это исправить. Когда я обновляюсь, я получаю эту ошибку, я использую аналогичный код при удалении, и это работает нормально. Я использовал точки останова при обновлении, оно продолжало идти до конца функции. Я думал, что при startActivityForResult будет переход на следующую страницу, но это не так. Точно такой же код для startActivityForResult работал в другой функции.

Вот код для обновления

    public void edit_to_report_page(final View v) {

    LayoutInflater inflater = LayoutInflater.from(this);
    View addView = inflater.inflate(R.layout.new_vehicle, null);
    idNum = (EditText) addView.findViewById(R.id.deleteRecord);
    new AlertDialog.Builder(this)
            .setTitle("Edit a report")
            .setMessage("Enter the Id number of the report to edit")
            .setView(addView)
            .setPositiveButton("Edit",
                    new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog,
                                int which) {
                            String id = idNum.getText().toString();
                            uniqueID = Long.parseLong(id);
                            newID(uniqueID);
                            info.open();

                            try {
                                boolean correctNumber = info
                                        .Exists(uniqueID);
                                if (!correctNumber) {
                                    Toast.makeText(getApplicationContext(),
                                            "Number not found",
                                            Toast.LENGTH_SHORT).show();

                                    info.close();

                                }else{

                                    info.close();
                                    intent = new Intent(v.getContext(),
                                            report.class);
                                    startActivityForResult(intent, 0);
                                }
                            } catch (Exception e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                    })
            .setNegativeButton("Cancel",
                    new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog,
                                int which) {
                            // TODO Auto-generated method stub

                        }
                    }).show();

}

Вот код для удаления, который работает

public void delete_db(View v) {

    LayoutInflater inflater = LayoutInflater.from(this);
    View addView = inflater.inflate(R.layout.new_vehicle, null);
    idNum = (EditText) addView.findViewById(R.id.deleteRecord);
    final Dialog d = new Dialog(this);
    final TextView tv = new TextView(this);

    new AlertDialog.Builder(this)
            .setTitle("Delete a report")
            .setMessage("Enter the Id number of the report to delete")
            .setView(addView)
            .setPositiveButton("Delete",
                    new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog,
                                int which) {
                            String id = idNum.getText().toString();
                            long primaryId = Long.parseLong(id);
                            info.open();
                            try {
                                boolean inCorrectNumber = info
                                        .deleteInspection(primaryId);
                                if (inCorrectNumber) {
                                    Toast.makeText(getApplicationContext(),
                                            "Number not found",
                                            Toast.LENGTH_SHORT).show();

                                }
                            } catch (Exception e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                            info.close();
                            dbInfo();
                        }
                    })
            .setNegativeButton("Cancel",
                    new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog,
                                int which) {
                            // TODO Auto-generated method stub

                        }
                    }).show();
}

Вот код в моем dbAdapter для удаления и существует (обновление)

public boolean Exists(long _id)throws Exception
{

    Cursor c = db.query(DB_TABLE, new String[] { KEY_ROWID},
            "_id=" + _id, null, null, null, null);
     boolean exists=(c.getCount()>0);
    c.close();
    return exists;
}

public boolean deleteInspection(long _id)throws Exception
{
    int numResults = 0;
    numResults = db.delete(DB_TABLE,"_id=" + _id , null);
    return (numResults < 1);
}

Вот что я получаю в logcat

04-10 09:47:05.006: E/CursorWindow(2961): Bad request for field slot 0,-1. numRows = 1, numColumns = 1
04-10 09:47:05.016: D/AndroidRuntime(2961): Shutting down VM
04-10 09:47:05.027: W/dalvikvm(2961): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
04-10 09:47:05.046: E/AndroidRuntime(2961): FATAL EXCEPTION: main
04-10 09:47:05.046: E/AndroidRuntime(2961): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.signalsetapp/com.signalsetapp.inspectionchecklist.report}: java.lang.IllegalStateException: get field slot from row 0 col -1 failed
04-10 09:47:05.046: E/AndroidRuntime(2961):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at android.os.Looper.loop(Looper.java:123)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at android.app.ActivityThread.main(ActivityThread.java:4627)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at java.lang.reflect.Method.invokeNative(Native Method)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at java.lang.reflect.Method.invoke(Method.java:521)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at dalvik.system.NativeStart.main(Native Method)
04-10 09:47:05.046: E/AndroidRuntime(2961): Caused by: java.lang.IllegalStateException: get field slot from row 0 col -1 failed
04-10 09:47:05.046: E/AndroidRuntime(2961):     at android.database.CursorWindow.getString_native(Native Method)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at android.database.CursorWindow.getString(CursorWindow.java:329)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:49)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at com.signalsetapp.inspectionchecklist.report.getInfoFromDB(report.java:129)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at com.signalsetapp.inspectionchecklist.report.onCreate(report.java:111)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-10 09:47:05.046: E/AndroidRuntime(2961):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
04-10 09:47:05.046: E/AndroidRuntime(2961):     ... 11 more

person Aaron    schedule 10.04.2012    source источник
comment
Возможно, вы захотите указать, какая строка вызывает у вас эту проблему.   -  person Carl-Emil Kjellstrand    schedule 10.04.2012
comment
Я не 100%. Я использовал точки останова, и функция продолжалась до конца. StartActivity не переходил на следующую страницу, однако тот же код для StartActivity использовался в функции добавления, и это работало нормально.   -  person Aaron    schedule 10.04.2012
comment
похоже на report.java:129, это плохой парень, это ваш код? Если да, не могли бы вы отметить это во встроенном коде выше. Должно немного помочь с отладкой этого :D   -  person Carl-Emil Kjellstrand    schedule 10.04.2012
comment
Спасибо, я менял свой код, и я изменил то, что не должен был делать.   -  person Aaron    schedule 10.04.2012
comment
добавьте ответ, чтобы я отметил вас как правильный ответ   -  person Aaron    schedule 10.04.2012


Ответы (2)


Рад помочь, добавляю, чтобы можно было отметить как ответ :)

похоже, что «report.java:129» здесь плохой парень, это ваш код? Если да, не могли бы вы отметить это во встроенном коде выше. Должно немного помочь с отладкой этого :D — erbsman 4 часа назад

person Carl-Emil Kjellstrand    schedule 10.04.2012

Аарон, у меня такое же исключение, и решение Check your column name you want to access it from cursor is same name as exists in database. А также удалите white space и сначала попробуйте запросить в SQLITE browser А затем попробуйте в кодировании и сделайте несколько Debugging ,I mean print query in logcat and copy ,and paste and sqlite Browser, это ключ для вас, иначе это займет больше времени и трудностей, чтобы решить это!

person Samir Mangroliya    schedule 10.04.2012