我正在使用Java包装器来访问Sqlite,但我认为这是一个普通的Sqlite问题。
String stmt = "SELECT foo FROM bah WHERE foo='%/?/%';
PreparedStatement a = myConn.prepareStatement(stmt);
a.setString(1, "hello");
a.executeQuery();
...抛出异常 - 它不喜欢?在引号内。如果我做的话,一切都很好
...WHERE foo=?
但这不是我想要的陈述。
如何将变量插入到这样的预处理语句中?如果你忘记了我正在使用Sqlite的事实,那么如何使用其他数据库技术完成这项工作?
答案 0 :(得分:4)
您可以在设置值时添加通配符:
String stmt = "SELECT foo FROM bah WHERE foo= ?"
PreparedStatement a = myConn.prepareStatement(stmt);
a.setString(1, "%hello%");
答案 1 :(得分:4)
我遇到的数据库都没有让你把一个参数放在一个字符串文字中。如果支持,则必须转义不是参数的字符串中的每个?
字符。
但是,您可以使用字符串连接来支持您的目标:
SELECT foo FROM bah WHERE foo = '%/' || ? || '/%'