回 帖 发 新 帖 刷新版面

主题:游动查询ACCESS数据库时莫名其妙的问题

程序如下:
<%@ page contentType="text/html;charset=GB2312"%>
<%@ page import="java.sql.*"%>

<html>
    <body bgcolor="cyan">
        <%
            String id,name;
            Connection con;
            Statement sql;
            ResultSet rs;
            
            try{
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            }
            catch(ClassNotFoundException e)
            {}
            
            try{
                con=DriverManager.getConnection("jdbc:odbc:redsun","hyz","123");
                sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
                rs=sql.executeQuery("SELECT*FROM cjb");
                rs.next();
                out.print(rs.getString(2));
            }
            catch(SQLException e1)
            {}
        %>
    </body>
</html>
以上程序连编译都通不过,提示是:org.apache.jasper.JasperException: String index out of range: -1
请高手解释解释,先谢了!

回复列表 (共6个回复)

沙发

说明你的JSP里有一个String类型的变量,并且使用了substring()的方法。这个方法的作用就是截取字符串变量中的指定字符段。一般出现这样的问题,是在调用substring()方法时,所给的参数不正确。(起始位置小于0,或结束位置大于字符串长度)

板凳

谢了,不过不是这个问题,把sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);改成sql=con.createStatement();就可以了,其实我想知道为什么不能进行非顺序查询?

3 楼

ResultSet是继承了Set的子类集合,在往Set集合存的过程中就已经排好了顺序,如果想非顺序查询,就用Map

4 楼

to adler : Set集合存的过程中就已经排好了顺序,如果想非顺序查询,就用Map
-------------------------------------------------------

Are you sure? 建议你去考考SCJP,会有帮助

Set接口唯一关心的事情就是不允许重复。仅此而已,谈何排序?你当是TreeSet的红黑树?

想非排序查询就用Map?用那个Map?用TreeMap么?

当然,我只是从字面上去反驳你,至于ResultSet到底是继承了Set的那个实现不在我反驳的范围之内。

5 楼

楼上批评的是,只怪俺学艺不精,以后多多指点,偶也是初学者,没学过数据结构与算法[em4]

6 楼


这个问题至今还没搞清楚,就这个程序连接ACCESS数据库时会出错,而连接MYSQL数据库时就没问题,还望高手能解释解释,先谢了

我来回复

您尚未登录,请登录后再回复。点此登录或注册