PreparedStatement操作数据库失败!!!!!急!!!!

sandy91 2003-09-29 03:53:21
想在数据库中插入数据,不成功抱错如下
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误

源代码:
int number=17;
String sql="insert into client values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement pstmt = con.prepareStatement(sql);
for(int i=0;i<number;i++)
{
pstmt.setString(i+1,array[i]);
pstmt.executeUpdate();
}
...全文
150 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sandy91 2003-09-30
  • 打赏
  • 举报
回复
谢谢,问题解决,马上揭贴!!!
zn7726 2003-09-30
  • 打赏
  • 举报
回复
最安全的方法是指定要插入的字段名,向上面的post中那样,(b1,c1) values (b1_value, v1_value).如果象你那么写SQL,就要保证‘?’的数量等于表中所有字段的数量,并且要set同样多数量的值。如果在要插入的字段中包含自增字段,按照Oracle的方法,只要在相应的set值的地方写上‘序列名.nextval’就行了。
yucky 2003-09-30
  • 打赏
  • 举报
回复
楼上说得对,第一列不插入值,设定为数据库自增的值,只能使用序列的方法!
建立触发器,插入时取序列.nextval,同时插入语句需更改
例字段为a1,b1,c1,a1要设为自增字段
String sql="insert into client(b1,c1) values(?,?)";
sandy91 2003-09-30
  • 打赏
  • 举报
回复
sql2000,可以解决在指定的指定的位置不插入吗??
lijunyonggg 2003-09-30
  • 打赏
  • 举报
回复
你的数据库是什么啊,跟数据库有关
lijunyonggg 2003-09-30
  • 打赏
  • 举报
回复
pstmt.executeUpdate();应放在循环外面,你现在这样写,就执行了几十次INSERT操作了;
前面的操作,SET数量不够,所以出错


sandy91 2003-09-30
  • 打赏
  • 举报
回复
如果这张表的第一列不插入值,设定为数据库自增的值,
用这种方法怎么写呢,??
zxl19790710 2003-09-30
  • 打赏
  • 举报
回复
for(int i=0;i<number;i++)
{
pstmt.setString(i+1,array[i]);

}
pstmt.executeUpdate();
sandy91 2003-09-30
  • 打赏
  • 举报
回复
好象不是这个问题啊,重新设置了NUMBER=22
还会出现同样的错误
whywzf 2003-09-29
  • 打赏
  • 举报
回复
同上,要和你要set的string一样多,自己数?吧
xiejiangjun 2003-09-29
  • 打赏
  • 举报
回复
number 数量不对
sandy91 2003-09-29
  • 打赏
  • 举报
回复
没人帮我吗

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧