我正在尝试编写一个sql查询,我希望在运行时传递表名。查询:
create table mytable (time datetime, price double)
所以,我创建了一个通用查询:
create table ? (time datetime, price double)
然后我在运行时将表名称传递为:
PreparedStatement preparedStatement = connection.prepareStatement(CREATE_TABLE_QUERY);
preparedStatement.setString(1, tableName);
preparedStatement.executeUpdate(CREATE_TABLE_QUERY);
在运行此代码时,我得到的异常是我的查询语法不正确。我们是否使用其他技术传递创建表的参数?
答案 0 :(得分:1)
据我所知,预编译语句不允许设置表名。大多数它只支持?在DML语句中的值(插入,更新,删除,选择),而不是DDL。
要创建表,您必须创建一个SQL字符串,例如
String s = "create table " + TABLE_NAME + " (col int) ";
stmt.execute(s);