我是java的新手.我想插入从FileChooser数据库中选择的文件路径.但是当我尝试这样做时,路径在查询语句之前是正确的,并且在将其输入数据库之后,它将删除文件路径中存在的所有反斜杠.
filepath=f.getCanonicalPath();
// some database statements....
String query="insert into table1 values('" + filepath + "')";
Run Code Online (Sandbox Code Playgroud)
如果我选择的文件路径是:
"C:\用户\文档\ hello.txt的";
它将其插入:
"C:Usersdocumentshello.txt"
基本上,您不应该将您的值直接放入SQL中.
您应该使用PreparedStatement并使用您的值设置参数.无需转义,也没有SQL注入攻击的风险.
String query = "insert into table1 values(?)";
PreparedStatement statement = connection.prepareStatement(query);
try {
statement.setString(1, filePath);
statement.executeUpdate();
} finally {
statement.close();
}
Run Code Online (Sandbox Code Playgroud)
任何你发现自己构建动态地根据用户输入的SQL的时候,你应该退后一步,并强烈考虑参数化的SQL来代替.(例外情况是你的应用程序基本上是一个SQL开发工具...)
| 归档时间: |
|
| 查看次数: |
1350 次 |
| 最近记录: |