0

你能帮我解决在列/字段动态变化的表中插入行的问题吗?我有一个名为 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();
    }
}
4

1 回答 1

1

如果您的数据库模式是动态变化的,那么您几乎肯定会走上一条错误的道路。

查看这个较旧的问题以获取一些警示性建议。

于 2013-01-30T01:25:36.667 回答