如何在JDBC查询中传递参数来创建表?

时间:2014-08-07 07:43:30

标签: java mysql sql jdbc

我正在尝试编写一个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);

在运行此代码时,我得到的异常是我的查询语法不正确。我们是否使用其他技术传递创建表的参数?

1 个答案:

答案 0 :(得分:1)

据我所知,预编译语句不允许设置表名。大多数它只支持?在DML语句中的值(插入,更新,删除,选择),而不是DDL。

要创建表,您必须创建一个SQL字符串,例如

String s = "create table " + TABLE_NAME + " (col int) ";
stmt.execute(s);