繁体   English   中英

将数据插入SQLite

[英]Inserting data into SQLite

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

这是我的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

我无法弄清楚出了什么问题。

这是你在做错的地方,问题是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");

这会奏效

我认为问题在于以下几点:

        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

我是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
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM