以前に作成した準備が整ったテーブル (必要に応じてテンプレート) に似たテーブルを作成しようとしていますが、唯一の変数はテーブル名である必要があります。
これは私がこれまでに試したことです:テンプレートテーブルをmysqlコードにエクスポートし、コードをpreparedStatementオブジェクトにコピーしました:
createNewLineTableStatement = constantLink.prepareStatement("CREATE TABLE IF NOT EXISTS ? (" +
" `index` int(5) NOT NULL," +
" `station` int(5) NOT NULL," +
" PRIMARY KEY (`index`)," +
" UNIQUE KEY `station` (`station`)" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\");");
次の関数を呼び出してコードを実行しようとするよりも:
private static boolean createNewLineTable(String tableName) throws SQLException{
createNewLineTableStatement.setString(1, tableName);
if (createNewLineTableStatement.executeUpdate() == Statement.EXECUTE_FAILED)
return false;
return true;
}
しかし、構文エラーの例外が発生します:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''line_37_var_1' ( `index` int(5) NOT NULL, `station` int(5) NOT NULL, PRIMARY' at line 1
コードを修正するにはどうすればよいですか? または、同じことを行うためのよりクリーンでより良い方法はありますか? たぶん、ユーザー変数を使用してスクリプトを作成しますか? 私はそれについて考えましたが、.sql スクリプトを使用したことがありません。