我遇到了一些困難努力,以動態的方式,創建一個使用PreparedStatement的一個新表。我正在嘗試添加未知數量的列以及它們各自的類型和大小。我不斷收到SQL語法錯誤,但我懷疑這可能不是這種情況。JDBC:使用PreparedStatement創建表,SQL語法錯誤與否?
中使用的變量:
- CON =連接對象
- colNames =字符串[]包含列名( 「人物」, 「電子郵件」 等)
- colTypes =字符串[]含有列類型( 「VARCHAR」, 「INT」 等)
- colSizes =字符串[]續(「100」,「11」等)
應該是不言而喻的。
con.setAutoCommit(false);
String sql = "? ?(?),";
PreparedStatement ps = con.prepareStatement(sql);
ps.addBatch("create table " + tablename + "(");
for (int i = 0; i < colNames.length; i++){
if (!(i == colNames.length-1)) {
ps.setString(1, colNames[i]);
ps.setString(2, colTypes[i]);
ps.setString(3, colSizes[i]);
} else {
String format = "%s %s(%s)";
String lastLine = String.format(format, colNames[i], colTypes[i], colSizes[i]);
ps.addBatch(lastLine);
}
}
ps.addBatch(");");
ps.executeBatch();
注意:是的,這是作業。我不想要任何死亡的贈品,而是指出我以什麼方式濫用某些功能,這是我懷疑的。
最好的問候, Krys
根據您的DBMS/JDBC驅動程序,您還需要刪除SQL字符串中尾隨的';' –