有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将数据插入SQLite

我想将数据插入我的SQLite数据库。 它由3列组成,分别命名为、id、问题和答案

这是我的提问方法

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

我不知道出了什么问题


共 (3) 个答案

  1. # 1 楼答案

    我假设,您的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
        }
    
  2. # 2 楼答案

    我认为问题在于以下几方面:

            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
    
  3. # 3 楼答案

    这就是你犯错误的地方,你的问题是Question1没有发送, 这是sendQuestion

      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");
    

    这会奏效的