Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JDBC查询中传递参数以创建表?_Java_Mysql_Sql_Jdbc - Fatal编程技术网

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

Java 如何在JDBC查询中传递参数以创建表?,java,mysql,sql,jdbc,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); prepar

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

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

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

若要创建表,必须创建SQL字符串,例如

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

这是我最可怕的噩梦成真。你确定没有其他方法吗?我记得几年前,我尝试过与你完全相同的方法,DB2、Oracle和SQLServer。我记得可能DB支持这种方法(我记不清了)。因此,我担心你需要先构建一个完整的字符串。prepared语句的目的是重用已编译的SQL语句来提高性能,特别是对于类似的SQL语句(例如,在一个表中插入1000条记录)。DDL不是它的目标,因为在DB方面,DDL需要比DML更多的东西ツ: 缺少有关从参数获取表名的任何详细信息。