【发布时间】:2016-02-10 09:54:42
【问题描述】:
我无法在数据库 (mySQL) 中创建表,使用 preparedStatement 并尝试使用 preparedStatement.setInteger() 输入未来表的名称:
static String queryCreateTable = "CREATE TABLE ?" +
"(ID INTEGER not NULL ," +
"BRAND VARCHAR(40)," +
"MODEL VARCHAR(40)," +
"YEAR INTEGER not NULL," +
"NOVELTY BINARY," +
"PRIMARY KEY ( ID ))";
然后我尝试在用户输入表名后构造和调用语句:
newNameOfTable = JOptionPane.showInputDialog("Connected for saving data. " +
"Input name of new table:");
pStatement = connection.prepareStatement(queryCreateTable);
pStatement.setString(1, newNameOfTable);
pStatement.executeUpdate();
如果我尝试在不输入名称的情况下执行它,效果很好(比如常量字符串:“CREATE TABLE newtable (...)”但我需要输入名称..
【问题讨论】:
-
SQL 不允许将表或列的名称作为参数输入。
-
为什么不先获取表名再创建查询字符串?
-
也可以在这里查看答案:stackoverflow.com/questions/12910891/…