最初に修正したいのは、String
インスタンスを変更するときにインスタンスを使用しないでください。String
インスタンスは不変であり、すでに作成されているインスタンスを変更するとString
、新しい変更されたインスタンスが作成され、無料ではありません。StringBuilder
これには、新しいインスタンスを作成せずに変更できるインスタンスメソッドがあるものを使用する必要があります。StringBuilder
を変更するときは常に使用することをお勧めしますString
。次に、呼び出しcon.prepareStatement(sql)
てからそのSQLフィールドを変更します。良くないですよね?したがって、Stringを使用した後でのみ追加してください。
String sql =
"CREATE TABLE if not exists itemset (?";
for(int j=1; j < ccolumns; j++) {
sql += ",?";
}
sql += ")";
System.out.println(sql);
up1 = con.prepareStatement(sql);
for(int j=1; j < ccolumns+1; j++) {
System.out.println(j);
up1.setString(j, "item"+j+" TINYINT(10)");
}
up1.executeQuery();
prepareStatement
与えられた状態で呼び出してから変更することはできませんString
。
しかし、よりクリーンでより速く、このようにしようとします
StringBuilder sqlStatement = new StringBuilder(
"CREATE TABLE if not exists itemset (?");
for(int j=1; j < ccolumns; j++) {
sqlStatement.append(",?");
}
sqlStatement.append(")");
up1 = con.prepareStatement(sqlStatement.toString());
for(int j=1; j < ccolumns+1; j++) {
System.out.println(j);
up1.setString(j, "item"+j+" TINYINT(10)");
}
up1.executeQuery();