Sqlite:如何将变量插入准备好的语句中的字符串中

Ben*_*n L 1 sql sqlite prepared-statement

我正在使用 Java 包装器来访问 Sqlite,但我认为这是一个一般的 Sqlite 问题。

String stmt = "SELECT foo FROM bah WHERE foo='%/?/%';
PreparedStatement a = myConn.prepareStatement(stmt);

a.setString(1, "hello");
a.executeQuery();
Run Code Online (Sandbox Code Playgroud)

...抛出异常 - 它不喜欢 ? 在引号内。如果我这样做一切都很好

...WHERE foo=?
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的声明。

如何将变量插入到这样的准备好的语句中?如果您忘记了我正在使用 Sqlite,那么如何使用其他数据库技术来完成此操作?

Phi*_*oss 5

我遇到的数据库都不允许您将参数放入字符串文字中。如果支持这一点,那么您必须转义?字符串中不是参数的每个字符。

但是,您可以使用字符串连接来支持您所追求的:

SELECT foo FROM bah WHERE foo = '%/' || ? || '/%'
Run Code Online (Sandbox Code Playgroud)