今天在写一段sql语句时,犯了一个新手常见的错误
Parameter index out of range (1 > number of parameters, which is 0).
简单解释就是参数超过了索引范围。
object[] ={name,id}
在这里单引号的?号不再是一个预设没有赋值的?号,而已经是一个参数,参数就是?号,[]数组中有俩个参数,当使用setObject()方法为?赋值时,并没有预设参数,导致索引越界。
这个异常的错误可以解释为,没有预设参数?号,但是却插入了一个值,导致参数越界。
原因其实很简单,就是当设置参数时,没有相应的问号与之匹配(或者根本就没有?号).
如果是: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