2015-03-10 2 views
-1

Я пытаюсь добавить данные в таблицу, названную как таблица пользователей. Он имеет две колонки Task и SubTask. Задача должна содержать значение _id таблицы задач, а SubTask должно содержать значение _id таблицы SubTask. Поэтому я ссылаюсь на эти два столбца как внешние ключи к этой таблице. Теперь я не могу вставить значения в эту таблицу. Я получаю вышеупомянутое исключение. Пожалуйста, дайте мне знать, что нужно сделать, чтобы преодолеть это. Все предложения приветствуются. Заранее спасибо.java.lang.numberFormatException: Invalid int "_id"

Схема UserTable:

public static final String CREATE_TABLE_USER = " CREATE TABLE " + TABLE_USER + " (" + UID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      TASK + " INTEGER, " + SUB_TASK + " INTEGER, " + " FOREIGN KEY (" + TASK + ") REFERENCES " + TABLE_NAME + " (" + UID + ")" + 
      " FOREIGN KEY (" + SUB_TASK + ") REFERENCES " + TABLE_NAME_CHILD + " (" + UIDCHILD + "));"; 

Database код, написанный для операции вставки:

public long addTaskPosition(int task_number, int sub_task_number) { 

     db = helper.getWritableDatabase(); 

     ContentValues contentValues = new ContentValues(); 

     contentValues.put(SQLiteHelper.TASK, task_number); 
     contentValues.put(SQLiteHelper.SUB_TASK, sub_task_number); 
     id2 = db.insert(SQLiteHelper.TABLE_USER, null, contentValues); 


     Log.d("PaNa", "The value of Id is " + id); 

     db.close(); 
     return id2; 


    } 

код, написанный в деятельности, чтобы установить значения для дб:

int taskNumber = Integer.parseInt(String.valueOf(SQLiteHelper.UID)); 
     Log.d("Pana" , "The value of taskNumber is " +taskNumber); 
     int subTaskNumber = Integer.parseInt(String.valueOf(SQLiteHelper.UIDCHILD.toString())); 


     long id2 = sqliteHelper.addTaskPosition(taskNumber, subTaskNumber); 

     if (id2 < 0) { 

      Toast.makeText(getApplicationContext(), "Insert Unsuccessful", Toast.LENGTH_LONG).show(); 
     } else { 
      Toast.makeText(getApplicationContext(), "Insert Successful", Toast.LENGTH_LONG).show(); 
     } 

ADB След:

Process: com.ms.t.tms, PID: 1835 
    java.lang.IllegalStateException: Could not execute method of the activity 
      at android.view.View$1.onClick(View.java:4007) 
      at android.view.View.performClick(View.java:4756) 
      at android.view.View$PerformClick.run(View.java:19749) 
      at android.os.Handler.handleCallback(Handler.java:739) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:135) 
      at android.app.ActivityThread.main(ActivityThread.java:5221) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
    Caused by: java.lang.reflect.InvocationTargetException 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at android.view.View$1.onClick(View.java:4002) 
            at android.view.View.performClick(View.java:4756) 
            at android.view.View$PerformClick.run(View.java:19749) 
            at android.os.Handler.handleCallback(Handler.java:739) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5221) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
    Caused by: java.lang.NumberFormatException: Invalid int: "_id" 
      at java.lang.Integer.invalidInt(Integer.java:138) 
      at java.lang.Integer.parse(Integer.java:410) 
      at java.lang.Integer.parseInt(Integer.java:367) 
      at java.lang.Integer.parseInt(Integer.java:334) 
      at com.ms.t.tms.InsertSubTaskActivity.addUser(InsertSubTaskActivity.java:496) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at android.view.View$1.onClick(View.java:4002) 
            at android.view.View.performClick(View.java:4756) 
            at android.view.View$PerformClick.run(View.java:19749) 
            at android.os.Handler.handleCallback(Handler.java:739) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5221) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

Пожалуйста, дайте мне знать, что нужно сделать, чтобы преодолеть это. Я новичок в android. Пожалуйста, помогите мне. Спасибо.

+0

отправьте свой logcat также –

+0

извините, опубликуйте его сейчас. Забыл. – Keshav1234

+0

Я добавил его сейчас – Keshav1234

ответ

1

если вы хотите значение для вашего SQLiteHelper.UIDCHILD и SQLiteHelper.UID вы можете выполнить rewquery на соответствующей таблице, и итерацию его с помощью:

ArrayList uid=new ArrayList<Integer>(); 
    Cursor cur=db.rawQuery("SELECT _id FROM yourtablename",null); 
    if (cur.getCount() > 0) 
     { 
     cur.moveToFirst(); 
     do 
     { 
     uid.add(cur.getInt(0)); 
     } 
     while (cur.moveToNext()); 
    cur.close(); 
     } 

и то же самое для other.You может пройти этот ArrayList в с помощью такого намерения

Intent intent=new Intent(Activity_context,youractivity_class); 
intent.putStringArrayListExtra("uid",uid); 
Activity_context.startActivity(intent); 
+0

Хорошо. теперь, если вам нужно использовать значения для их вставки в другую таблицу, следует ли использовать функцию intent.putExtra, а затем получить значение с помощью намерения.get Extra? – Keshav1234

+0

Мне нужно использовать эти значения в действии. – Keshav1234

+0

Я бы сказал, храня эти значения в arraylist, а затем передать этот arraylist через намерение и получить значения, как вы хотите, и использовать их, если вы хотите, я могу отредактировать мой ответ –

Смежные вопросы