次のように、コードに基づいてビューを生成できません。
final String[] clusterClasses = {"exponential", "linear", "periodic"};
java.sql.PreparedStatement pCreateViewStmt = conn.prepareStatement(
"create view ?_? as "
+ "select * from golden_table where clust_list like ? ?");
for(int i = 0; i < clusterClasses.length; i++) {
for(int j = 0; j < clusterClasses.length; j++) {
pCreateViewStmt.setString(1, clusterClasses[i]);
pCreateViewStmt.setString(2, clusterClasses[j]);
pCreateViewStmt.setString(3, "%"+clusterClasses[i]);
pCreateViewStmt.setString(4, "%"+clusterClasses[j]+"%");
}
}
SQL 構文例外が発生します。
Exception in thread "main" 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 ''exponential'_'periodic'
as select * from golden_table where clust_list like '%e' at line 1
これは PreparedStatement とワイルドカードに関係していますが、?
私にはよくわかりません。
i
以下は、ループの 1 回の反復でcreate view コマンドとして生成されるものです。
create view exponential_periodic AS
select *
from golden_table
where clust_list like '%exponential%periodic%';