将数据插入到通过Java动态更改的MySql表中

时间:2013-01-26 01:52:47

标签: java mysql

您能否帮我解决我的问题:将行插入到列/字段动态变化的表中。我有一个名为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();
    }
}

1 个答案:

答案 0 :(得分:1)

如果您的数据库架构动态变化,那么您几乎肯定会走上一条糟糕的道路。

查看this older question以获取一些警示性建议。