ODBC驱动程序管理器无效的游标状态
来源:互联网 发布:南风知我意妈妈网 编辑:程序博客网 时间:2024/05/17 00:02
我用的tomcat 7.0,eclipse 8.5,已经把class12.jar放到tomcat的lib目录下,oracle是9.2,表login的列we和ss都是varchar2(10)类型。在执行下列代码时:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:bksfhcxt";
String user="system";
String password="oracle2";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt = conn.createStatement();
String sql="select * from LOGIN";
ResultSet rs=stmt.executeQuery(sql);
if (rs !=null){out.println("rs.getString(3)");}
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
页面能正确显示 rs.getString(3) 字符出来,
但在执行下面语句时:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:bksfhcxt";
String user="system";
String password="oracle2";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt = conn.createStatement();
String sql="select * from LOGIN";
ResultSet rs=stmt.executeQuery(sql);
//if (rs !=null){out.println("rs.getString(3)");}
while(rs.next()){%>
<%=rs.getString(1)%>
<%=rs.getString(2)%>
<%}%>
<table>
<tr>
<td>员工号</td>
<td>姓名</td>
</tr>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
</tr>
</table>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
则报以下错误:
type Exception report
message An exception occurred processing JSP page /index.jsp at line 24
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 24
21: <td>濮撳悕</td>
22: </tr>
23: <tr>
24: <td><%=rs.getString(1)%></td>
25: <td><%=rs.getString(2)%></td>
26:
27: </tr>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
javax.servlet.ServletException: java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的游标状态
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:912)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841)
org.apache.jsp.index_jsp._jspService(index_jsp.java:116)
原因比较简单,我之前的代码是:
while(rs.next()){%>
<%=rs.getString(1)%>
<%=rs.getString(2)%>
<%}%>
while循环这里必然已经把数据集遍历完毕了,也就是游标走到了最后一行的后面(EOF行)。
然后我又想:
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
必然错误。
应该是把逻辑搞错了,应该是:
String sql="select * from LOGIN";
ResultSet rs=stmt.executeQuery(sql);
%>
<table>
<tr>
<td>员工号</td>
<td>姓名</td>
</tr>
<% while(rs.next()){ %>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
</tr>
<% } %>
</table>
<%
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:bksfhcxt";
String user="system";
String password="oracle2";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt = conn.createStatement();
String sql="select * from LOGIN";
ResultSet rs=stmt.executeQuery(sql);
if (rs !=null){out.println("rs.getString(3)");}
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
页面能正确显示 rs.getString(3) 字符出来,
但在执行下面语句时:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:bksfhcxt";
String user="system";
String password="oracle2";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt = conn.createStatement();
String sql="select * from LOGIN";
ResultSet rs=stmt.executeQuery(sql);
//if (rs !=null){out.println("rs.getString(3)");}
while(rs.next()){%>
<%=rs.getString(1)%>
<%=rs.getString(2)%>
<%}%>
<table>
<tr>
<td>员工号</td>
<td>姓名</td>
</tr>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
</tr>
</table>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
则报以下错误:
type Exception report
message An exception occurred processing JSP page /index.jsp at line 24
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 24
21: <td>濮撳悕</td>
22: </tr>
23: <tr>
24: <td><%=rs.getString(1)%></td>
25: <td><%=rs.getString(2)%></td>
26:
27: </tr>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
javax.servlet.ServletException: java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的游标状态
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:912)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841)
org.apache.jsp.index_jsp._jspService(index_jsp.java:116)
原因比较简单,我之前的代码是:
while(rs.next()){%>
<%=rs.getString(1)%>
<%=rs.getString(2)%>
<%}%>
while循环这里必然已经把数据集遍历完毕了,也就是游标走到了最后一行的后面(EOF行)。
然后我又想:
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
必然错误。
应该是把逻辑搞错了,应该是:
String sql="select * from LOGIN";
ResultSet rs=stmt.executeQuery(sql);
%>
<table>
<tr>
<td>员工号</td>
<td>姓名</td>
</tr>
<% while(rs.next()){ %>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
</tr>
<% } %>
</table>
<%
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
此文由Web开发之答疑解惑源整理,若需转载 ,请注明原文(ODBC驱动程序管理器无效的游标状态)出处:http://www.znjcx.com/html/y2012/3310_odbc-driver-manager-invalid-cursor-state.html
- ODBC驱动程序管理器无效的游标状态
- 学习笔记:[Microsoft][ODBC 驱动程序管理器] 无效的游标状态
- [Microsoft][ODBC 驱动程序管理器] 无效的游标状态
- java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的游标状态
- [Microsoft][ODBC 驱动程序管理器] 无效的描述器索引
- 关于java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓冲区长度问题
- JAVA使用ODBC连接数据库抛错问题 [Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓
- [Microsoft][ODBC 驱动程序管理器]驱动程序的SQLSetConnectAttr 失败的解决办法!
- odbc连接dbf表出现 [Microsoft][ODBC 驱动程序管理器] 驱动程序不支持此功能” 错误的解决方法
- [Microsoft][ODBC 驱动程序管理器] 驱动程序不支持此功能
- golang SQLDriverConnect: {IM005} [Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLAllocHandle on SQL_HANDLE_DBC 失败
- [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 的解决方法之一
- [ODBC 驱动程序管理器] 驱动程序和应用程序之间的体系结构不匹配 SQLSTATE=IM0014
- [ODBC 驱动程序管理器] 未发现数据源
- [ODBC 驱动程序管理器] 未发现数据源
- SQLSTATE ODBC API(驱动程序管理器)错误
- Jsp select top 无效的游标状态 解决办法
- [AnyDAC][Phys][ODBC][Microsoft][ODBC 驱动管理器]在指定的DSN中,驱动程序和应用程序体系结构不
- android ListView的上部下拉刷新下部点击加载更多具体实现及拓展
- 获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)
- Python MySQLdb模块
- 更新器自动更新自己(自我更新)
- CROC-MBTU 2012, Final Round (Online version, Div. 2)
- ODBC驱动程序管理器无效的游标状态
- linux mount挂载设备(u盘,光盘,iso等 )使用说明
- char与unsigned char的本质区别
- mac下安装python-mysql
- qt-dialog
- “少年派”生命里的上帝与野兽
- 时间格式转换算法: XXXXXX -> XX:XX:XX
- iOS图片裁剪、绘制背景色
- desktop file entry detal