当前位置: 技术问答>java相关
一个jdbc的问题,问了好多人都不知道怎么解决,大家来给看看(在线等待答案)
来源: 互联网 发布时间:2015-07-10
本文导语: 我用的是jdk1.4连接数据库,问题主要出在conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)中,相信好多人也遇到这种问题,每次一执行我的tomcat就会自动停止服务,昨天研究了一天,也没找出结果,希望大家能...
我用的是jdk1.4连接数据库,问题主要出在conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)中,相信好多人也遇到这种问题,每次一执行我的tomcat就会自动停止服务,昨天研究了一天,也没找出结果,希望大家能帮帮我,按理来说jdk1.4(使用jdbc2)应该支持这些方法
try{
conn=DriverManager.getConnection(conStr);
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
}catch(SQLException e)
{System.err.println("createStatement() Error:"+e.getMessage());}
catch(Exception e)
{out.print(e.toString()+e.getMessage());}
try{
rs=stmt.executeQuery(sql);
}catch(SQLException ex)
{System.err.println("executeQuery("+sql+") Error: "+ex.getMessage());}
rs.absolute(2);
out.print(rs.getString(2)+" ");
out.print(rs.getString(3)+" ");
out.print(rs.getString(4)+" ");
out.print(rs.getString(5)+"
");
try{
conn=DriverManager.getConnection(conStr);
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
}catch(SQLException e)
{System.err.println("createStatement() Error:"+e.getMessage());}
catch(Exception e)
{out.print(e.toString()+e.getMessage());}
try{
rs=stmt.executeQuery(sql);
}catch(SQLException ex)
{System.err.println("executeQuery("+sql+") Error: "+ex.getMessage());}
rs.absolute(2);
out.print(rs.getString(2)+" ");
out.print(rs.getString(3)+" ");
out.print(rs.getString(4)+" ");
out.print(rs.getString(5)+"
");
|
看到你这个语句rs.absolute(2);没有?
你用的是jdbc-odbc桥连接数据库,这样连接所得到的结果集是不支持滚动光标的,也就是说即时你用了stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);也一样不起效果。
这样得到的结果集,它不但不支持滚动光标,而不可编辑。所以你用rs.absolute(2);想取得第2条记录,这是无法成功的,系统肯定报错。
换用驱动连接数据库的方式吧!
==============================================================
如上所言,并非完全正确,请从建议的角度、用怀疑的眼光批判地接收
你用的是jdbc-odbc桥连接数据库,这样连接所得到的结果集是不支持滚动光标的,也就是说即时你用了stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);也一样不起效果。
这样得到的结果集,它不但不支持滚动光标,而不可编辑。所以你用rs.absolute(2);想取得第2条记录,这是无法成功的,系统肯定报错。
换用驱动连接数据库的方式吧!
==============================================================
如上所言,并非完全正确,请从建议的角度、用怀疑的眼光批判地接收
|
猜想是 tomcat 或是 支持sqlserver 的 jdbc 陈旧了,你试试最新的。
如连oracle 就有 最新的 jdbc 支持。
如连oracle 就有 最新的 jdbc 支持。
|
JDBC2.0的规范中定义的某些方法,数据库厂商其实并没有实现,如游标的回溯等。你的代码应该是没有什么问题,可能就是这个原因。把createStatment方法中的参数去掉试试吧。
|
会不会你的数据库驱动不支持jdbc2????
|
gz
|
jdbc-odbc桥是不支持JDBC2.0以上的,所以你的代码就不能使用了,建议你下在新的支持JDBC2.0的驱动。如果是SQL Server可以到微软网站上下载,都是免费的。