PreparedStatement を使用して動的な方法で新しいテーブルを作成しようとすると、いくつかの問題が発生します。不明な数の列と、それぞれのタイプとサイズを追加しようとしています。SQL 構文エラーが発生し続けますが、ここではそうではないのではないかと思います。
使用される変数:
- con = 接続オブジェクト
- colNames = String[] 列名 ("person"、"email" など) を含む
- colTypes = String[] 列の型 ("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();
注: はい、これは宿題です。私は死んだ景品は望んでいません。むしろ、私が疑っているいくつかの機能をどのように誤用しているかについてのポインタが欲しいです。
敬具、クリス