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

将数据插入通过Java动态更改的MySql表,java,mysql,Java,Mysql,您能帮我解决在列/字段动态变化的表中插入行的问题吗。我有一个名为schedule的表,其中的字段会动态增加或减少。 我的要求是在这个表中插入数据。问题是,我不确定有多少字段,因为它是动态增加或减少的 我的想法是:我使用ResultSetMetaData动态地知道字段名。这样,我可以使用插入查询,如下所示: ResultSet res = stat.executeUpdate("insert into scheduletab (name,date,shift,'"+col_name[i]+"')

您能帮我解决在列/字段动态变化的表中插入行的问题吗。我有一个名为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();
    }
}
if(例如getSource()==b34)
{
String[]col_name=新字符串[25];
尝试
{
Class.forName(“com.mysql.jdbc.Driver”);
Connection con=DriverManager.getConnection(
“jdbc:mysql://localhost/nursedb“,”根“,”123456”);
尝试
{
语句st=con.createStatement();
结果集rs=st.executeQuery(“从scheduletab中选择*);
ResultSetMetaData md=rs.getMetaData();
int col=md.getColumnCount();
System.out.println(“列数:+col”);
System.out.println(“列名称:”);

对于(inti=1;i来说,如果您的数据库模式正在动态变化,那么您几乎肯定会走上一条不好的道路


查看一些警告性建议。

您可以使用StringBuilder并根据需要构建查询。我还建议您在其他类中建立连接,而不是将所有内容都放在按钮侦听器中。您可以对此进行更多解释吗?很抱歉,回复太晚。我希望我的回答有助于解决您的问题。让我知道噢,如果您在执行此操作时遇到任何问题。您是说数据库架构在应用程序运行时被修改了吗?@Dave这就是他的sql查询所建议的