小智 4
您可能会遇到诸如 ASCII STOP 之类的字符和此类非打印字符的问题,但如果您使用准备好的语句和参数绑定,即使使用诸如'.
如果您不想使用参数绑定和准备好的语句,您可以将所有输入替换'为\',就可以了。
SQL 通常使用'特殊字符来告诉字符串文字何时开始或停止。如果您的输入包含此字符,它将停止将当前行视为字符串并开始将其视为命令。从安全角度来看,这不是一件好事。它还可以阻止您输入该字符,除非您通过在其前面放置反斜杠来“转义”它,这告诉 SQL 忽略该字符'并继续将后面的字符视为字符串,直到'遇到未转义的字符。当然,反斜杠文字也可以转义为双反斜杠。
准备好的语句通常如下所示:
String sql = "INSERT INTO MYTABLE (NAME, EMP_NO, DATE_HIRED) VALUES (?, ?, ?)";
PreparedStatement ps = sqlite.prepareStatement(sql);
ps.setString(1, myString);
ps.setInt(2, myInt);
ps.setDate(3, myDate);
ps.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不知道您将使用哪个库从 Android 访问 sqlite,所以目前我无法向您提供更多详细信息。
| 归档时间: |
|
| 查看次数: |
9111 次 |
| 最近记录: |