列/フィールドが動的に変化するテーブルに行を挿入するという私の問題を解決できますか? schedule という名前のテーブルがあり、フィールドに応じて動的に増減します。私の要件は、このテーブルにデータを挿入することです。問題は、動的に増加または減少するため、フィールドがいくつあるかわからないことです。
私の考え: フィールド名を動的に知るために ResultSetMetaData を使用しました。これにより、次のような挿入クエリを使用できます。
ResultSet res = stat.executeUpdate("insert into scheduletab (name,date,shift,'"+col_name[i]+"') values (....., ...., .....)");
ここでの問題は、「i」の値をどのように初期化または指定するかということです。
私のコードは次のとおりです。
注: b34 は送信するボタンです。
if (e.getSource() == b34)
{
String[] col_name = new String[25];
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost/nursedb", "root", "123456");
try
{
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM scheduletab");
ResultSetMetaData md = rs.getMetaData();
int col = md.getColumnCount();
System.out.println("Number of Column : " + col);
System.out.println("Columns Name: ");
for (int i = 1; i <= col; i++)
{
col_name[i] = md.getColumnName(i);
System.out.println(col_name[i]);
}
}
catch (SQLException s)
{
System.out.println("SQL statement is not executed!");
}
// Start Inserting data into Schedule Tab by specifying the
// column names.
Statement stat = con.createStatement();
// ResultSet res =
// stat.executeUpdate("insert into scheduletab (name,date,shift,'"values();
// End Inserting data into Schedule Tab by specifying the column
// names.
}
catch (Exception ex)
{
ex.printStackTrace();
}
}