加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Parameter   index   out   of   range   (1   >   number   of   parameters,   which   is   0).

(2012-07-13 15:15:02)
标签:

parameter

index

out

of

range

(1

>

number

parameters

which

is

0).

分类: javaWeb
今天同学叫我给他看代码,数据库insert出错,让后浪费了我很长时间,结果发现是中英文标点问题,写此篇(mysql数据库)总结,以利于后学者,知道的可以点评一下,欢迎交流。

数据库错误:Parameter   index   out   of   range   (1   >   number   of   parameters,   which   is   0). 
错误发生原因其实很简单,就是当设置参数时,没有相应的问号与之匹配(或者根本就没有?号).
如果是:Parameter   index   out   of   range   (26   >   number   of   parameters,   which   is   25). 
翻译为:找到了25个问号,却插入了26个值,导致参数越界(根据得到的信息打印将很容易判断数据是否与数据库字段匹配等小问题)。

与sql语句有关的原因如下:
1.?号被单引号包围。
(如setString(1,"slkdjfkd");时sql语句为:insert into table1 (c1,c2) values ('?','?'))。
此时?会被作为参数传入,而不会再传入 setString里面的值。

2.sql语句中没有?号,在后面用到了set语句。(如:select * from table);
此时无需传值。传值就会出错。

3.初学者很常见的错误:?---?
这两个问号是不同了,因为一个是中文,一个是英文,如果在sql语句中写入的是英文,将无法识别。


其他原因:
1.连接已经关闭。 
 如果与其他操作语句一起公用conn时,如果上一操作已经关闭连接,则会报错。表现为:时而能够进行操作,时而不能。
2.pstm没有初始化,无驱动包,得到连接出错等基础问题……

都是一些比较基础的东西,希望大家不要犯这种错误,浪费宝贵时间。
(欢迎转载,请注明出处。http://blog.sina.com.cn/s/blog_6df227a40101709h.html)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有