javaでMySQLにあるテーブルを検索してなければ新規テーブルを作成したい。
「車票」というテーブルがデータベース内に存在しない場合、新規に作成して中身を表示するプログラムを作成したいです。
現在のプログラムでは、エラーでjava.sql.SQLSyntaxErrorException: Table 'cardb.車票' doesn't exist
と出てしまいます。改善方法を教えていただきたいです。
import java.sql.*;
public class Sample1
{
public static void main(String[] args)
{
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost/cardb";
String user = "***";
String pw = "****";
Connection cn = DriverManager.getConnection(url, user, pw);
DatabaseMetaData dm = cn.getMetaData();
ResultSet tb = dm.getTables(null, null, "車票", null);
Statement st = cn.createStatement();
String qry1 = "CREATE TABLE 車票(番号 int, 名前 varchar(50))";
String[] qry2 = {
"INSERT INTO 車票 VALUES (2, '乗用車')",
"INSERT INTO 車票 VALUES (3, 'オープンカー')",
"INSERT INTO 車票 VALUES (4, 'トラック')"};
String qry3 = "SELECT * FROM 車票";
if(!tb.next()) {
st.executeUpdate(qry1);
for(int i=0; i<qry2.length; i++) {
st.executeUpdate(qry2[i]);
}
}
ResultSet rs = st.executeQuery(qry3);
ResultSetMetaData rm = rs.getMetaData();
int cnum = rm.getColumnCount();
while(rs.next()) {
for(int i=1; i<=cnum; i++) {
System.out.print(rm.getColumnName(i) +":"+ rs.getObject(i) + " ");
}
System.out.println("");
}
rs.close();
st.close();
cn.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}