u014353911
wuruize888
采纳率88.2%
2017-05-09 10:43 阅读 1.5k

java.sql.SQLException问题

10

如题,这个什么问题?
insert into (abc)(a_NAME,aSYS_VERSION,a_RUNTIME) values(?,?,?)
用的是java ,prepareStatement
报错java.sql.SQLException: Parameter index out of range (0 < 1 )

ps = conn.prepareStatement(sql);
for (int i = 1; i <= mValue.size(); i++) {
String inX = mValue.get(i).toString();

            if (isType.isFloat(inX, "+")) {
                ps.setFloat(i, Float.parseFloat(inX));
                System.out.println(inX + "是浮点<br>");
            } else if (isType.isNum(inX, "+")) {
                ps.setInt(i, Integer.parseInt(inX));
                System.out.println(inX + "是整数<BR>");
            } else if (isType.isValidDate(inX)) {
                String newtime = (String) inX;
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                Date dateA = format.parse(newtime);
                ps.setDate(i, (java.sql.Date) dateA);
                System.out.println(inX + "是时间<BR>");
            } else {
                ps.setString(i, inX);//是字符串
                System.out.println(inX + "是字符串<BR>");
            }
            //ps.addBatch();
            System.out.println("inx:" + inX);
        }
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

8条回答 默认 最新

  • rainjm rainjm 2017-05-10 02:29

    你要解决错误!必须要知道,你报的错是什么意思,从而来进行解决错误!
    对于我们程序员而言,第一步学会的不是如何编码,而是如果查找错误,分析理解错误的意思,从而解决错误!
    你报的sql语句错误java.sql.SQLException: Parameter index out of range (0 < 1 )意思是参数超出范围!!
    就是你填充的字段大于你输入的数据,从而不匹配!从字面上解析来说!
    解决方案尝试1:
    把insert into (abc)(a_NAME,aSYS_VERSION,a_RUNTIME) values(?,?,?)(有可能你的id不是自增)这段语句在您你数据库执行下,并把数据填充进去,看执行是否正确!
    如果错误,看是否是问题所在。如果没有错误!跳到解决方案2
    解决方案尝试2:需要你提供部分的全代码 ,你所贴的代码不全!

    点赞 2 评论 复制链接分享
  • qq_27020369 天才小彩笔i 2017-05-09 10:51

    insert into abc(a_NAME,aSYS_VERSION,a_RUNTIME) values(?,?,?)
    a,b,c 的括号去了试试

    点赞 1 评论 复制链接分享
  • ztw1122 丁丁当当VB狗 2017-05-09 12:02

    这个 参数 是从0开始的。。。。

    点赞 1 评论 复制链接分享
  • sun1021873926 夕阳雨晴 2017-05-09 13:48

    看哈这个满足你的条件不?http://www.myexception.cn/sql/1938153.html

    点赞 1 评论 复制链接分享
  • u012310056 赵大笨笨 2017-05-10 05:03

    你map的个数和问号的个数不相符吧?断点看看你map中有多少个值

    点赞 1 评论 复制链接分享
  • qq_36371218 帝君l 2017-05-10 05:31

    参数你恐怕只传递了一个吧,然后你却是从下表为1开始遍历

    点赞 1 评论 复制链接分享
  • qq_18895659 AngusC· 2017-05-11 06:37

    看你这个主要是数组越界了

    点赞 评论 复制链接分享
  • miaoch miaoch 2017-05-12 09:05

    Parameter index out of range (0 < 1 )
    其实这个错误是这样造成的
    举个例子比如是String你set字段的时候用了 ptm.setString(0, "test");
    而PreparedStatement 的下标是从1开始的,所以就会报这个错误。
    如果比如你set(4,xxx);就会报Parameter index out of range (4 > number of parameters, which is 3).
    多试试就知道了。
    楼上说多了个括号,这个也会造成错误,你也得去掉,
    不然是会报
    You have an error in your SQL syntax;check the manual that corresponds ..................这样一大串的
    然后要注意报错的位置。你这个错误应该是报在ptm.setString(0, "test");这一行
    而多了个括号的错误会在ptm.execute();这一行

    点赞 评论 复制链接分享

相关推荐