2014-02-26 126 views
0

我想插入数据到我的SQLite数据库。 它由名为id,Questions和Answer的3列组成。插入数据到SQLite

这是我addQuestion方法

long addQuestion(addtodb question) { 
      SQLiteDatabase db = this.getWritableDatabase(); 

      ContentValues values = new ContentValues(); 

      values.put(KEY_NAME, KEY_NAME); // question Name 
      values.put(KEY_ANSWER, KEY_ANSWER); // answer 

      // Inserting Row 
      return db.insert(TABLE_QUESTIONS, null, values); 
      //db.close(); // Closing database connection 
     } 

     addtodb getQuestion(int id) { 
       SQLiteDatabase db = this.getReadableDatabase(); 

       Cursor cursor = db.query(TABLE_QUESTIONS, new String[] { KEY_ID, 
         KEY_NAME, KEY_ANSWER }, KEY_ID + "=?", 
         new String[] { String.valueOf(id) }, null, null, null, null); 
       if (cursor != null) 
        cursor.moveToFirst(); 

       addtodb question = new addtodb(Integer.parseInt(cursor.getString(0)), 
         cursor.getString(1), cursor.getString(2)); 

       return question; 
      } 

我打电话这种方式这种方法,

DatabaseHandler db = new DatabaseHandler(this); 
long id = db.addQuestion(new addtodb(0, "Question1", "answer1")); 
id = db.addQuestion(new addtodb(0, "Question2", "answer2")); 
db.close(); 

我想记录是1, Question1, Answer1同样。

但我得到1, Question, Answer

我想不通哪里出了问题。

+0

什么是你'addtodb'类是什么样子? –

+0

请显示您正在存储列名的KEY_NAME和KEY_ANSWER –

+0

的声明,而不是它们的值。请参阅'vales.put' – njzk2

回答

1

这是你正在做的错误,你的问题是Question1不发, 这是该派Question

values.put(KEY_NAME, KEY_NAME); // question Name 
    values.put(KEY_ANSWER, KEY_ANSWER); // answer 

更改为

long addQuestion(String Question, String Answer) { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 

     values.put(KEY_NAME, Question); // question Name 
     values.put(KEY_ANSWER, Answer); // answer 

     // Inserting Row 
     return db.insert(TABLE_QUESTIONS, null, values); 
     //db.close(); // Closing database connection 
    } 

你调用的方法也可以变化因为您已经在addQuestion方法中启动数据库

long id = addQuestion("Question1", "answer1"); 
id = db.addQuestion("Question2", "answer2"); 

这将工作

1

我认为问题是在这些线路:

 values.put(KEY_NAME, KEY_NAME); // question Name 
     values.put(KEY_ANSWER, KEY_ANSWER); // answer 

你不及格被写入到数据库中的实际值。 put方法的第二个参数应该是实际值。

 values.put(KEY_NAME, "some question value"); // question Name 
     values.put(KEY_ANSWER, "some answer value"); // answer 
0

我assumnig,你Addtodb类看起来是这样的:

public class Addtodb{ 

     int id; 
     String question; 
     String answer; 



public Addtodb(int id, String question, String answer){ 

    this.id = id; 
    this.question = question; 
    this.answer = answer; 


} 



public int getId() { 
    return id; 
} 



public void setId(int id) { 
    this.id = id; 
} 



public String getQuestion() { 
    return question; 
} 



public void setQuestion(String question) { 
    this.question = question; 
} 



public String getAnswer() { 
    return answer; 
} 



public void setAnswer(String answer) { 
    this.answer = answer; 
} 
} 

修正会在这里:

long addQuestion(Addtodb question) { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 

     values.put(KEY_NAME, question.getQuestion()); // question Name 
     values.put(KEY_ANSWER, question.getAnswer()); // answer 

     // Inserting Row 
     return db.insert(TABLE_QUESTIONS, null, values); 
     //db.close(); // Closing database connection 
    }