字符串包含引号时的SQL异常(无法识别的标记)

Dan*_*iel 2 mysql android sqlexception

当我使用我的函数从"mysql.db"检索数据时,我得到SQL Exception(无法识别的令牌).String 地址内部有引号时发生异常.

我已经尝试改变这一行

KEY_ADDRESS + "='" + address + "'",
Run Code Online (Sandbox Code Playgroud)

KEY_ADDRESS + "=\"" + address + "\"",
Run Code Online (Sandbox Code Playgroud)

它解决了包含单引号(')和(`)的字符串的问题,但是为包含双引号(")的字符串创建了另一个问题.

我试过用

DatabaseUtils.sqlEscapeString(address);
Run Code Online (Sandbox Code Playgroud)

没有效果.

我试图从这个问题中使用转义函数:如何在MySQL中转义特殊字符?,但它没有用.

这是我的代码:

public Cursor getNameFromAddress(String address) throws SQLException
{
    Cursor mCursor =
            db.query(DATABASE_TABLE_PRINC, new String[] {
                    KEY_ROWID,
                    KEY_NAME,
                    KEY_ADDRESS
                    },
                    KEY_ADDRESS + "='" + address + "'",
                    null,
                    null,
                    null,
                    null,
                    null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}
Run Code Online (Sandbox Code Playgroud)

zap*_*apl 5

那些selectionArgs/ whereArgs旨在用于此:

Cursor mCursor =
        db.query(DATABASE_TABLE_PRINC, new String[] {
                KEY_ROWID,
                KEY_NAME,
                KEY_ADDRESS
                },
                KEY_ADDRESS + "=?",
                new String[] { address },
                null,
                null,
                null,
                null);
Run Code Online (Sandbox Code Playgroud)

替换所有"='" + stuff + "'""=?"并把数据以填补?在他们的待填充的s阶String[]

? 然后将自动替换为转义字符串数据.