Sqlite:如何将变量插入准备好的语句中的字符串中
我正在使用 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,那么如何使用其他数据库技术来完成此操作?
I'm using a Java wrapper for accessing Sqlite but I assume this is a general Sqlite question.
String stmt = "SELECT foo FROM bah WHERE foo='%/?/%';
PreparedStatement a = myConn.prepareStatement(stmt);
a.setString(1, "hello");
a.executeQuery();
... throws an exception - it doesn't like the ? being inside quotes. Everything is fine if I do
...WHERE foo=?
but this isn't the statement I want.
How can I insert a variable into such a prepared statement? If you forget about the fact I'm using Sqlite, how is this is done using other database technologies?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我遇到的数据库都不允许您将参数放入字符串文字中。如果支持这一点,那么您必须转义字符串中不是参数的每个
?
字符。但是,您可以使用字符串连接来支持您所追求的:
No database I've encountered will let you put a parameter inside a string literal. If this was supported, then you'd have to escape every
?
character in a string that wasn't a parameter.You can, however, use string concatenation to support what you are after:
设置值时可以添加通配符:
You can add the wildcard when setting the value: