Android SQL INSERT语句使用变量问题

0 sql android insert

我的 SQL INSERT 语句有问题。我试图插入存储在字符串中的数据,但这总是会引发错误。

private final String HASH_DB = "hashDb";
private final String HASH_TABLE2 = "newHashes";

SQLiteDatabase hashDB = null;

hashDB = this.openOrCreateDatabase(HASH_DB, MODE_PRIVATE, null);

hashDB.execSQL("CREATE TABLE IF NOT EXISTS " + HASH_TABLE2
    + " (dialogID INT, Filename VARCHAR, Hash VARCHAR);");

hashDB.execSQL("INSERT INTO " + HASH_TABLE2 +" (dialogID, Filename, Hash) "
   + " Values (dialogID, filename, newHash);");
Run Code Online (Sandbox Code Playgroud)

dialogID 是一个 int,Filename 和 Hash 都是字符串,我已经通过在 Toast 中显示它们来确认正确的数据存储在其中。

上面抛出了一个错误,但是如果我将最后一行更改为下面的内容,即对要插入的数据进行硬编码,它就可以工作。

hashDB.execSQL("INSERT INTO " + HASH_TABLE2 +" (dialogID, Filename, Hash) "
   + " Values (4, 'filename', 'newHash');");
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它发挥作用?

非常感谢

马特

Kil*_*wes 5

我还没有真正使用过 Android,但是这些文件不是文件变量吗?

难道不应该吗

hashDB.execSQL("INSERT INTO " + HASH_TABLE2 +" (dialogID, Filename, Hash) "
   + " Values (" + dialogID + ", '" + filename + "', '" + newHash + "');");
Run Code Online (Sandbox Code Playgroud)