2015-04-07 4 views
0

У меня возникли проблемы с использованием целых чисел в БД. У меня есть SQLiteOpenHelper здесь я создаюНевозможно вставить целочисленный тип в DB

DBAdapter:

public static final String KEY_ROWID="id"; 
public static final String KEY_EXR="name"; 
public static final String KEY_WGHT="weight"; 
public static final String KEY_REP="repetition"; 
public static final String KEY_DATE="duedate"; 
final static String[] columns = {KEY_ROWID, KEY_EXR, KEY_WGHT, KEY_REP}; 



    final static String DATABASE_NAME = "ExerciseDB"; 
final static String DATABASE_TABLE = "exercisetb"; 
final static int DATABASE_VERSION = 2; 


//DBAdapter için Loglar 

private static final String TAG = "DBAdapter"; 



private static final String DATABASE_CREATE = 
     "create table if not exists exercisetb (id integer primary key autoincrement, " 
       + "name VARCHAR not null, weight VARCHAR not null, repetition integer not null);"; 

Вставка:

public long insertRecord() { 


      ContentValues values = new ContentValues(); 

      values.put(DBAdapter.KEY_EXR, name.toString()); 

      values.put(DBAdapter.KEY_WGHT, weight.toString(); 

      values.put(DBAdapter.KEY_REP, Integer.parseInt(repetition.toString())); 
      values.clear(); 

      return mDbHelper.getWritableDatabase().insert(DBAdapter.DATABASE_NAME, null, values); 

     } 

EDIT: Я добавил insertRecord(), чтобы показать, какой шаг возникает проблема:

public long insertRecord() { 


      ContentValues values = new ContentValues(); 

      values.put(DBAdapter.KEY_EXR, name.toString()); 
      Log.i(TAG,"Name field assign."); 

      values.put(DBAdapter.KEY_WGHT, Integer.parseInt(weight.toString())); 
      Log.i(TAG,"weight assisgn."); 
      values.put(DBAdapter.KEY_REP, Integer.parseInt(repetition.toString())); 
      Log.i(TAG,"repetition field assign."); 
      values.clear(); 

      return mDbHelper.getWritableDatabase().insert(DBAdapter.DATABASE_NAME, null, values); 

     } 

Выход журнала после попытки вставить:

04-07 15:23:25.217 3442-3442/com.example.alperen.exercisem I/addnew﹕ OnClick'e girildi 
04-07 15:23:25.217 3442-3442/com.example.alperen.exercisem I/addnew﹕ Name field assign. 
04-07 15:23:25.217 3442-3442/com.example.alperen.exercisem I/addnew﹕ weight assisgn. 
04-07 15:23:25.217 3442-3442/com.example.alperen.exercisem D/AndroidRuntime﹕ Shutting down VM 
04-07 15:23:25.217 3442-3442/com.example.alperen.exercisem W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x430ef140) 
04-07 15:23:25.227 3442-3442/com.example.alperen.exercisem E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.example.alperen.exercisem, PID: 3442 
    java.lang.NumberFormatException: Invalid int: "android.widget.EditText{21d1d000 VFED..CL .F...... 0,166-720,249 #7f080043 app:id/repetition}" 
      at java.lang.Integer.invalidInt(Integer.java:137) 
      at java.lang.Integer.parse(Integer.java:374) 
      at java.lang.Integer.parseInt(Integer.java:365) 
      at java.lang.Integer.parseInt(Integer.java:331) 
      at com.example.alperen.exercisem.Addnew$1.insertRecord(Addnew.java:69) 

Проблема возникает при последней переменной. Мы можем положить KEY_EXR; KEY_WGHT, но не KEY_REP. Если я изменю столбец KEY_REP на VARCHAR только тогда, я могу добавить данные в эту строку. Вероятно, я ошибаюсь во время создания таблицы.

+0

повторение INTEGER не null –

+0

Какое ** целое ** вы пытаетесь вставить? –

+0

Вы получаете сообщение об ошибке? Что в итоге? – niyou

ответ

-1

пожалуйста прокомментируйте строку в insertRecord() Methode:

//values.clear();

потому что он очищает ваши значения от списка значений и не обновляет новую строку в вашей таблице.

0

Для непустых полей также укажите значения по умолчанию. Также, согласно отчету о сбое, существует исключение формата номера. Проверьте Integer.parseInt (repeatet.toString()), вполне возможно повторение не числовое значение.

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