为了账号安全,请及时绑定邮箱和手机立即绑定

如何为java预处理语句插入使用tablename变量

如何为java预处理语句插入使用tablename变量

慕虎7371278 2019-08-28 09:10:44
如何为java预处理语句插入使用tablename变量我正在使用java PreparedStatment对象来构造一系列批量INSERT查询。查询语句的格式是......String strQuery = "INSERT INTO ? (col1, col2, col3, col4, col5) VALUES (?,?,?,?,?,?);";...所以字段值和表名都是变量(即,我有多个具有相同列格式的表,其中每个插入将指向不同的一个)。如果我删除“?”,我可以让执行工作 tablename变量和硬代码,但每个预处理语句将被插入到不同的表中,因此需要保留一个变量,我在执行批处理查询之前立即填充...stmt.setString(1, "tableName1");我怎么能让这个变成动态变量呢?
查看完整描述

3 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

你不能。您需要使用字符串连接/占位符和String.format构造sql。prepared语句用于列值而不是表名。


查看完整回答
反对 回复 2019-08-28
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

您可以使用占位符代替表名,然后将其替换为您的表名。

String strQuery = "INSERT INTO $tableName (col1, col2, col3, col4, col5)
             VALUES (?,?,?,?,?,?);";

当你知道tablename时替换

String query =strQuery.replace("$tableName",tableName);stmt =conn.prepareStatement(query);


查看完整回答
反对 回复 2019-08-28
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

一种替代方案可能是String.format

例如

String sql = String.format("INSERT INTO $1%s (col1, col2, col3, (etc)",  myTablename);


查看完整回答
反对 回复 2019-08-28
  • 3 回答
  • 0 关注
  • 675 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信