2015-05-04 3 views
-1

Я пытаюсь добавить объекты JSON в виде строк в мою базу данных. Я использую следующий код:Android SQLite DataType mismatch

public static final String SQL_CREATE_TABLE = 
      "CREATE TABLE " + TABLE_NAME + "(" 
        + KEY_PRIMARY + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
        + COLUMN_ID + " TEXT, " 
        + COLUMN_TITLE + " TEXT, " 
        + COLUMN_AUTHOR + " TEXT, " 
        + COLUMN_VOTES + " TEXT, " 
        + COLUMN_SEARCH + " TEXT)"; 

public int insertQuestion3(Context c,String ids,String titles,String authors,String votes,String search) 
    { 
     DatabaseWrapper databaseWrapper = new DatabaseWrapper(c); 
     Log.e("ERROR2", String.valueOf(isDatabaseOpened())); 
     myDataBase = databaseWrapper.getWritableDatabase(); 

     long questionId = 0; 
     if (isDatabaseOpened()) { 
      ContentValues values = new ContentValues(); 
      values.put(QuestionORM.COLUMN_ID, ids); 
      values.put(QuestionORM.COLUMN_TITLE,titles); 
      values.put(QuestionORM.COLUMN_AUTHOR, authors); 
      values.put(QuestionORM.COLUMN_VOTES, votes); 
      values.put(QuestionORM.COLUMN_SEARCH, search); 
      questionId = myDataBase.insert(QuestionORM.TABLE_NAME, "null", values); 
      Log.e(TAG, "Inserted new Question with ID: " + questionId); 
      myDataBase.close(); 
     } 
     return (int) questionId; 
     } 

И в деятельности:

holdid = new JSONObject(); 
        holdid.put("uniqueIDs", new JSONArray(ids)); 
        String _id = holdid.toString(); 
        Log.e("VALUE5",_id); 

        holdauthor = new JSONObject(); 
        holdauthor.put("uniqueAuthors",new JSONArray(authors)); 
        String _auth = holdauthor.toString(); 
        Log.e("VALUE4",_auth); 

        holdtitle = new JSONObject(); 
        holdtitle.put("uniqueTitles",new JSONArray(titles)); 
        String _title = holdtitle.toString(); 
        Log.e("VALUE2",_title); 

        holdvotes = new JSONObject(); 
        holdvotes.put("uniqueVotes",new JSONArray(votes)); 
        String _vote = holdvotes.toString(); 
        Log.e("VALUE",_vote);       q.insertQuestion3(MainActivity.this,_id,_title,_auth,_vote,val); 

Но я получаю следующие ошибки в логическом:

заявления прерывается на 5: [INSERT INTO вопроса (поиск, голоса, название, идентификатор, автор) VALUES (?,?,?,?,?)] несоответствие данных datatype

Но все они имеют одинаковый тип данных, т. Е. ТЕКСТ.

Я получаю эту ошибку на этой линии:

  questionId = myDataBase.insert(QuestionORM.TABLE_NAME, "null", values); 

Но все они имеют один и тот же тип данных, т.е. TEXT, а также, то QuestionID возвращается как -1.

Как исправить это?

Спасибо!

+1

Вы изменили sql sql sql SQL_CREATE_TABLE, прежде чем пытаться вставить? – inmyth

ответ

0

Хорошо, я нашел ответ. По-видимому, у него было что-то с именем базы данных. Типы данных сталкивались с другими базами данных с тем же именем.

комментарии здесь Inserting data into SQLite database, datatype mismatch

оказалось очень полезным!