Java 我创建了一个表,但在其中插入值时出错

Java 我创建了一个表,但在其中插入值时出错,java,mysql,Java,Mysql,我创建了一个表,但在其中插入值时出错。此处插入时,[]是传递给函数的字符串数组。我得到了以下错误: 列计数与第1行的值计数不匹配 这是我的密码: try { String tablename=c+d; String ab=""; for(int i=1 ; i<=k ; i++) { ab =ab+"column"+i+" VAR

我创建了一个表,但在其中插入值时出错。此处插入时,[]是传递给函数的字符串数组。我得到了以下错误:

列计数与第1行的值计数不匹配

这是我的密码:

 try
        {
            String tablename=c+d;
            String ab="";

              for(int i=1 ; i<=k ; i++)
              {
                   ab =ab+"column"+i+" VARCHAR(255),";
              }
            //establish connection to database

            connection = DriverManager.getConnection(DATABASE_URL,"root","rohma");
            statement = connection.createStatement();

            //resultSet = statement.executeQuery("SELECT idactors,firstname,lastname FROM actors");

              String sql ="CREATE TABLE  "  + tablename + "(id INTEGER not NULL AUTO_INCREMENT, "  + ab + " PRIMARY KEY ( id ))"; 
              statement.executeUpdate(sql);

              int ki=0;
              //
              String abv ="";
              String tv="";
              int gk =1;
              for(int i =0 ; i<k ;i++)
              {    
                   // colum shows i and j shows fieds insertion  
                  for(int j=0 ; j<p ; j++)
                  { 
                    if(j<p-1)
                    {
                    abv =abv +"'"+a[ki]+"'"+"," ; 
                    ki++;
                    }
                    else
                    {
                        abv =abv +"'"+a[ki]+"'"; 
                        ki++;
                    }
                  }
                  tv ="INSERT INTO `abc`.`"+tablename+"` (`column "+gk+"`) VALUES ("+abv+")";
                  gk++;
                  statement.executeUpdate(tv);
              }

        }

使用以下命令创建列名:

ab =ab+"column"+i+" VARCHAR(255),";
但在执行插入操作时,代码中的单词列后面会有一个空格:

INSERT INTO `abc`.`"+tablename+"` (`column "+gk+"`)
应该是这样的:

INSERT INTO `abc`.`"+tablename+"` (`column"+gk+"`)

您可以在创建表时和执行SQL之前添加打印输出,以确保列的数量与插入值的数量相同。还要确保插入中的列与创建的列相同。

创建列名时使用:

ab =ab+"column"+i+" VARCHAR(255),";
但在执行插入操作时,代码中的单词列后面会有一个空格:

INSERT INTO `abc`.`"+tablename+"` (`column "+gk+"`)
应该是这样的:

INSERT INTO `abc`.`"+tablename+"` (`column"+gk+"`)

您可以在创建表时和执行SQL之前添加打印输出,以确保列的数量与插入值的数量相同。还要确保插入中的列与创建的列相同。

创建表时:

for(int i=1 ; i<=k ; i++) {
   ab =ab+"column"+i+" VARCHAR(255),";
}
但当您准备插入时,您会:

for(int i =0 ; i<k ;i++) {   
...
 ded = ded+"`column"+gk+"`,";
...
}
因此,您的问题是用于列名的索引不同

尝试:

for(int i =1 ; i<=k ;i++) {   
...
 ded = ded+"`column"+i+"`,";
...
}

创建表格时,您需要执行以下操作:

for(int i=1 ; i<=k ; i++) {
   ab =ab+"column"+i+" VARCHAR(255),";
}
但当您准备插入时,您会:

for(int i =0 ; i<k ;i++) {   
...
 ded = ded+"`column"+gk+"`,";
...
}
因此,您的问题是用于列名的索引不同

尝试:

for(int i =1 ; i<=k ;i++) {   
...
 ded = ded+"`column"+i+"`,";
...
}

`列+gk+`VALUES+abv+;表中没有第1列字段。您只有id column即使您声明了column+i+VARCHAR255,没有空格,但是插入时您有空格:`column+gk+`好的,我已经更改了代码,请参见下面我对这篇文章的回答,但它仍然给出错误`column+gk+` value+abv+;表中没有第1列字段。您只有id column即使您声明了column+i+VARCHAR255,没有空格,但是插入时您有空格:`column+gk+`好的,我已经更改了代码,请参见下面我对这篇文章的回答,但它仍然给出了错误