我尝试使用
SELECT COUNT(*) FROM :TableName;
在 JDBI 中我使用了
.bind("Tablename", "MyTable")
结果始终在单引号内:
SELECT COUNT(*) FROM 'MyTable';
有没有正确的方法来参数化类似的东西TableName
?
bind
不是用于标识符而是值。Table
是一个数据库对象,它的名称是引用它的标识符。
因此,您必须显式构造 sql 查询字符串以动态包含表名。
Example:
String tableName = "employee";
String sql = "SELECT COUNT(*) FROM " + tableName;
然后,如果您想根据字段值或表达式过滤计数或任何其他结果,则可以绑定它。
Example:
sql = sql + " WHERE deptno = :deptNoToBind";
int deptNo = 20;
// ... use db handle to bind
handle.createQuery( sql )
.bind( "deptNoToBind", deptNo );
您可以看到列或表达式的值已绑定,但标识符未绑定。
您正在寻找的功能是 @Define - 这是其用法的示例:
import org.skife.jdbi.v2.sqlobject.customizers.Define;
...
@SqlUpdate("create table if not exists <table> (" +
"startTime TimeStamp not null," +
"stopTime TimeStamp not null," +
"uuid varchar(255)" +
")")
public void createTable(@Define("table") String table);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)