说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

菜鸟遇到一个怪问题,几乎相同的代码,只是一个下拉框在table下面,没有问题,我把下拉框提到上面去,代码没改,却提示ResultSet is clos

编辑:说三道四文库 发布时间:2018-02-19 09:52
HTML文档下载 WORD文档下载 PDF文档下载
没有错误的:

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>

<% 

  
//变量声明 
java.sql.Connection sqlCon; //数据库连接对象 
java.sql.Statement sqlStmt; //SQL语句对象 
java.sql.ResultSet sqlRst,sqlRst2; //结果集对象 
java.lang.String strCon; //数据库连接字符串 
java.lang.String strSQL,strSQL2; //SQL语句 
int i;

//装载JDBC-ODBC驱动程序 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
//设置数据库连接字符串 
strCon = "jdbc:odbc:Test_DB"; 
//连接数据库 
sqlCon = java.sql.DriverManager.getConnection(strCon,"sa",""); 
//创建SQL语句对象 
//sqlStmt = sqlCon.createStatement(); 
sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY); 

//设置获取数据SQL语句 
strSQL = "select * from 地衡检斤信息"; 

//执行SQL语句并取得结果集 
sqlRst = sqlStmt.executeQuery(strSQL);

//将记录指针定位到待显示页的第一条记录上 
%> 
<html> 
<head>
<title>石化地衡检斤本年信息浏览</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head> 
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0">
<p>&nbsp;</p>


<table border="1" cellspacing="0" cellpadding="0" width=814 align=left>
  <% 
//显示数据 
i = 0; 
while(sqlRst.next()){ %>
  <tr> 
    <%
  String id=sqlRst.getString("id");
  %>
    <td width="75"><font size="2">编号</font></td>
    <td width="41"><font size="2">日期</font></td>
    <td width="66"><font size="2">时间</font></td>
    <td width="78"><font size="2">油品名称</font></td>
    <td width="85"><font size="2">购户</font></td>
    <td width="67"><font size="2">车号</font></td>
    <td width="140"><font size="2">拉运数量</font></td>
    <td width="101"><font size="2">班长</font></td>
    <td width="86"><font size="2">检斤人</font></td>
  </tr>
  <tr> </tr>
  <tr> 
    <td align=center><font size="2"><%=sqlRst.getString(2)%></font></td>
    <td align=center><font size="2"><%=sqlRst.getString(3)%></font></td>
    <td align=center><font size="2"><%=sqlRst.getString(4)%></font></td>
    <td align=center><font size="2"><%=sqlRst.getString(5)%></font></td>
    <td align=center><font size="2"><%=sqlRst.getString(6)%></font></td>
    <td align=center><font size="2"><%=sqlRst.getString(7)%></font></td>
    <td align=center><font size="2"><%=sqlRst.getString(10)%></font></td>
    <td align=center><font size="2"><%=sqlRst.getString(12)%></font></td>
    <td align=center><font size="2"><%=sqlRst.getString(13)%></font></td>
    <% i++; } %>
  </tr>
</table> 
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>请选择单位 
  <select name="select">
    <%

strSQL2 = "select * from 检斤人库 "; 
sqlRst2 = sqlStmt.executeQuery(strSQL2); 
    while (sqlRst2.next())

{%>
    <option value=<%=sqlRst2.getString(3)%>> <%=sqlRst2.getString(3)%> </option>
    <%
     }
//sqlRst2.close();

%>
  </select>
</p>


</body> 
</html> 
<% 
//关闭结果集 
//sqlRst.close(); 
//关闭SQL语句对象 
sqlStmt.close(); 
//关闭数据库
sqlCon.close();
%>

***********************出现ResultSet is closed错误的:**************


<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>

<% 

  
//变量声明 
java.sql.Connection sqlCon; //数据库连接对象 
java.sql.Statement sqlStmt; //SQL语句对象 
java.sql.ResultSet sqlRst,sqlRst2; //结果集对象 
java.lang.String strCon; //数据库连接字符串 
java.lang.String strSQL,strSQL2; //SQL语句 
int i;

//装载JDBC-ODBC驱动程序 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
//设置数据库连接字符串 
strCon = "jdbc:odbc:Test_DB"; 
//连接数据库 
sqlCon = java.sql.DriverManager.getConnection(strCon,"sa",""); 
//创建SQL语句对象 
//sqlStmt = sqlCon.createStatement(); 
sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY); 

//设置获取数据SQL语句 
strSQL = "select * from 地衡检斤信息"; 

//执行SQL语句并取得结果集 
sqlRst = sqlStmt.executeQuery(strSQL);

//将记录指针定位到待显示页的第一条记录上 
%> 
<html> 
<head>
<title>石化地衡检斤本年信息浏览</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head> 
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0">
<p>请选择单位 
  <select name="select">
    <%

strSQL2 = "select * from 检斤人库 "; 
sqlRst2 = sqlStmt.executeQuery(strSQL2); 
    while (sqlRst2.next())

{%>
    <option value=<%=sqlRst2.getString(3)%>> <%=sqlRst2.getString(3)%> </option>
    <%
     }
//sqlRst2.close();

%>
  </select>
</p>


<table border="1" cellspacing="0" cellpadding="0" width=814 align=left>
  <% 
//显示数据 
i = 0; 
while(sqlRst.next()){ %>
  <tr> 
    <%
  String id=sqlRst.getString("id");
  %>
    <td width="75"><font size="2">编号</font></td>
    <td width="41"><font size="2">日期</font></td>
    <td width="66"><font size="2">时间</font></td>
    <td width="78"><font size="2">油品名称</font></td>
    <td width="85"><font size="2">购户</font></td>
    <td width="67"><font size="2">车号</font></td>
    <td width="140"><font size="2">拉运数量</font></td>
    <td width="101"><font size="2">班长</font></td>
    <td width="86"><font size="2">检斤人</font></td>
  </tr>
  <tr> </tr>
  <tr> 
    <td align=center><font size="2"><%=sqlRst.getString(2)%></font></td>
    <td align=center><font size="2"><%=sqlRst.getString(3)%></font></td>
    <td align=center><font size="2"><%=sqlRst.getString(4)%></font></td>
    <td align=center><font size="2"><%=sqlRst.getString(5)%></font></td>
    <td align=center><font size="2"><%=sqlRst.getString(6)%></font></td>
    <td align=center><font size="2"><%=sqlRst.getString(7)%></font></td>
    <td align=center><font size="2"><%=sqlRst.getString(10)%></font></td>
    <td align=center><font size="2"><%=sqlRst.getString(12)%></font></td>
    <td align=center><font size="2"><%=sqlRst.getString(13)%></font></td>
    <% i++; } %>
  </tr>
</table> 
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>


</body> 
</html> 
<% 
//关闭结果集 
//sqlRst.close(); 
//关闭SQL语句对象 
sqlStmt.close(); 
//关闭数据库
sqlCon.close();
%>
把//执行SQL语句并取得结果集 
sqlRst = sqlStmt.executeQuery(strSQL);

移到
sqlRst = sqlStmt.executeQuery(strSQL);
//显示数据 
i = 0; 
 试试看原因sqlStmt重新执行的时间会自动关闭前面的resultset
Executes the given SQL statement, which returns a single ResultSet object.

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘