Лоша заявка за поле слот 0,-1. numRows = 1, numColumns = 1

Продължавам да получавам това в моя logcat всеки път, когато стартирам кода си и не мога да разбера как да го поправя. Когато актуализирам, получавам тази грешка, използвам подобен код, когато изтривам и това работи добре. Използвах точки на прекъсване при актуализацията, тя продължи до края на функцията. Мислех, че при 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