Sqlite:如何在预准备语句中将变量插入到字符串中

时间:2010-03-04 13:56:08

标签: 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();

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

...WHERE foo=?

但这不是我想要的陈述。

如何将变量插入到这样的预处理语句中?如果你忘记了我正在使用Sqlite的事实,那么如何使用其他数据库技术完成这项工作?

2 个答案:

答案 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 = '%/' || ? || '/%'