Java 我创建了一个表,但在其中插入值时出错
我创建了一个表,但在其中插入值时出错。此处插入时,[]是传递给函数的字符串数组。我得到了以下错误: 列计数与第1行的值计数不匹配 这是我的密码: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
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+`好的,我已经更改了代码,请参见下面我对这篇文章的回答,但它仍然给出了错误