如何使用Android sqlite准备好的语句?

时间:2014-02-21 15:48:07

标签: android sql database sqlite prepared-statement

所以我试图理解准备好的语句是如何处理的?我有这个代码,但我不确定它是否使用预准备语句或如何向其添加预准备语句。

代码:

/*
     * Creating a word
     */
    public long createword(DatabaseWords word) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_DICTIONARYID, word.get_dictionaryId());
        values.put(KEY_WORD1, word.get_word1());
        values.put(KEY_WORD2, word.get_word2());
        values.put(KEY_WORD3, word.get_word3());
        values.put(KEY_WORD4, word.get_word4());

        // insert row
        long word_id = db.insert(TABLE_WORDS, null, values);

        return word_id;

    }

如何将准备好的语句包含在A中,使其更快,B。防止对db的攻击

1 个答案:

答案 0 :(得分:2)

是的,insert()使用预备语句:sqlite_prepare_v2()来编译SQL,然后sqlite3_bind_*()来绑定来自ContentValues的参数。这可以防止通常的SQL注入攻击。

要使用预准备语句进行性能,即只进行一次SQL编译,并对具有不同绑定参数的多个查询重用相同的预准备语句,请参阅SQLiteDatabase.compileStatement()SQLiteStatement