精华内容
下载资源
问答
  • Java连接数据库发生错误:结果集已关闭 解决方法:在返回结果集时,不要关闭Connection和Statement。

    Java连接数据库发生错误:结果集已关闭

    解决方法:在返回结果集时,不要关闭Connection和Statement。

    展开全文
  • db2 resultSet关闭时提示结果集已关闭异常这个就是db2自己的行为特性,在所有行被取出来之后自动关闭。解决办法就是不去关闭它就好了。Problem(Abstract)After upgrading the JDBC driver from the Legacy JDBC Type...

    db2 resultSet关闭时提示结果集已关闭异常

    这个就是db2自己的行为特性,在所有行被取出来之后自动关闭。解决办法就是不去关闭它就好了。

    Problem(Abstract)

    After upgrading the JDBC driver from the Legacy JDBC Type 2 driver (db2java.zip) to the Data Server Driver for JDBC (db2jcc.jar) the following error now occurs “Invalid operation: result set is closed. ERRORCODE=-4470, SQLSTATE=null”

    Symptom

    com.ibm.db2.jcc.am.SqlException: [jcc][t4][10120] [10898][4.11.77] Invalid operation: result set is closed. ERRORCODE=-4470, SQLSTATE=null

    Cause

    The IBM Data Server Driver for JDBC and SQLJ automatically closes the cursor when all rows have been retrieved from a ResultSet. When ResultSet.next is executed after the cursor is closed the SQLException is thrown. This behavior differs from the DB2 JDBC Type 2 drive where the cursor is not automatically closed upon retrieving all rows from a ResultSet.

    展开全文
  • 在实施过程中,我试图创建一个功能,使学生能够注册他们的科目,因此该功能基本上搜索学生完成其先决条件的科目.所以我写了下面的代码:package GUIs;import java.sql.*;import javax.swing.*;public class AddSub...

    我是使用NetBeans的

    Java初学者,我试图创建类似于教师注册系统的东西.我使用SQL Server 2005来创建数据库.

    在实施过程中,我试图创建一个功能,使学生能够注册他们的科目,因此该功能基本上搜索学生已完成其先决条件的科目.所以我写了下面的代码:

    package GUIs;

    import java.sql.*;

    import javax.swing.*;

    public class AddSubToStd extends javax.swing.JFrame {

    final void FillList1(){

    try{

    String url = "jdbc:sqlserver://localhost:1433;databaseName=BIS";

    String username = "sa";

    String password = "*****";

    Connection conn = DriverManager.getConnection(url,username,password);

    Statement stmt = conn.createStatement();

    DefaultListModel DLM = new DefaultListModel();

    ResultSet res = stmt.executeQuery("SELECT * FROM Students");

    while(res.next()){

    DLM.addElement(res.getString("ID"));

    }

    List1.setModel(DLM);

    }

    catch(SQLException e){

    JOptionPane.showMessageDialog(null, e.toString());

    }

    }

    final void FillList2(){

    try{

    String url = "jdbc:sqlserver://localhost:1433;databaseName=BIS";

    String username = "sa";

    String password = "*****";

    Connection conn = DriverManager.getConnection(url,username,password);

    Statement stmt = conn.createStatement();

    DefaultListModel DLM = new DefaultListModel();

    String Query = "SELECT * FROM FinishedCourses WHERE ID = '"+List1.getSelectedValue()+"'";

    ResultSet res = stmt.executeQuery(Query);

    ResultSet res1;

    String S_Code;

    String Query1;

    while(res.next()){

    S_Code = res.getString("S_Code");

    Query1 = "SELECT * From Subjects WHERE Prerequisite = '"+S_Code+"'";

    res1 = stmt.executeQuery(Query1);

    while(res1.next()){

    DLM.addElement(res.getString("S_Code"));

    }

    }

    conn.close();

    stmt.close();

    List2.setModel(DLM);

    }

    catch(SQLException e){

    JOptionPane.showMessageDialog(null, e.toString());

    }

    }

    public AddSubToStd() {

    initComponents();

    FillList1();

    }

    但我得到SQLException,当我尝试调用FillList2()时,结果集已关闭

    private void UpdateAllowedActionPerformed(java.awt.event.ActionEvent evt) {

    try{

    String url = "jdbc:sqlserver://localhost:1433;databaseName=BIS";

    String username = "sa";

    String password = "*****";

    Connection conn = DriverManager.getConnection(url,username,password);

    FillList2();

    }

    catch(SQLException e){

    JOptionPane.showMessageDialog(null, e.toString());

    }

    }

    有人请帮忙.

    展开全文
  • 该楼层疑似违规被系统折叠隐藏此楼查看此楼求大神帮忙看一下下面的很多条sql语句的顺序,不知道是不是顺序的错误package 读者具体功能实现;import java.awt.BorderLayout;import java.awt.GridLayout;import java....

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    求大神帮忙看一下下面的很多条sql语句的顺序,不知道是不是顺序的错误

    465b7bc663d34c6791732720498d7047.png

    4b3b272db88ec63134e5b12571de8466.png

    package 读者具体功能实现;

    import java.awt.BorderLayout;

    import java.awt.GridLayout;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import java.awt.event.ItemEvent;

    import java.awt.event.ItemListener;

    import java.awt.event.MouseEvent;

    import java.awt.event.MouseListener;

    import java.sql.Connection;

    import java.sql.DriverManager;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

    import java.text.ParseException;

    import java.text.SimpleDateFormat;

    import java.util.Date;

    import java.util.Vector;

    import javax.swing.JButton;

    import javax.swing.JComboBox;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JMenu;

    import javax.swing.JMenuBar;

    import javax.swing.JPanel;

    import javax.swing.JScrollPane;

    import javax.swing.JTabbedPane;

    import javax.swing.JTable;

    import javax.swing.JTextArea;

    import javax.swing.JTextField;

    import javax.swing.table.JTableHeader;

    import 对象.book;

    import 对象.user;

    import 界面类.userframe;

    public class returnbook extends JFrame implements ActionListener {

    JPanel jp1,jp2,jp3,jp4;

    static Connection con = null;

    Statement sm1,sm2,sm3,sm4,sm5,sm6,sm7,sm8;

    JLabel jl1,jl2,jl3,jl4,jl5;

    JButton **1,**2;

    JTextField jtf1,jtf2,jtf3,jtf4,jtf5;

    JComboBox jcb1,jcb2,jcb3,jcb4;

    public static String dateStr;

    public static Date back_date;

    JScrollPane jsp;

    ResultSet rs1,rs2,rs3,rs4;

    public static void main(String[] args) {

    returnbook rb=new returnbook ();

    }

    public returnbook (){//先处理上面

    String [] str1={"数学类","文学类","体育类","外语类","史学类","文化生活类","教育类","医学类"};

    String [] str2={"罗天益医学全书","体适能基础理论","文化生活与生活的文化","围城","新三国志","红与黑","概率论","文化生活与生活的文化"};

    String [] str3={"钱钟书","阮伯仁","许敬生","司汤达","刘浩然","赵凯旋","南宫民","丁国昌"};

    String [] str4={"清华大学出版社","北京大学出版社","外语研究社出版社","南开大学出版社","中国教育出版社","中国科学出版社","中国中医药出版社","人民体育出版社"};

    jcb1 = new JComboBox(str1);

    jcb1.addActionListener(this);

    jcb2 = new JComboBox(str2);

    jcb2.addActionListener(this);

    jcb3 = new JComboBox(str3);

    jcb3.addActionListener(this);

    jcb4 = new JComboBox(str4);

    jcb4.addActionListener(this);

    JPanel jp1=new JPanel();

    jp1.setLayout(new GridLayout(2,2));

    jp1.add(jcb1);

    jp1.add(jcb2);

    jp1.add(jcb3);

    jp1.add(jcb4);

    JTabbedPane jtp=new JTabbedPane();

    JPanel jp5=new JPanel();

    jtp.add("条件查询",jp1);

    jtp.add("全局查询",jp5 );

    this.add(jtp,BorderLayout.NORTH);

    //处理中部

    Vector cn=new Vector<>();//定义列名向量

    cn.add("图书编号");

    cn.add("图书类型");

    cn.add("图书名称");

    cn.add("单价");

    cn.add("出版社");

    cn.add("出版日期");

    cn.add("作者");

    cn.add("库存数量");

    Vector> cn3=new Vector<>();//定义表格数据向量

    Vector cn2=new Vector<>();//定义行向量

    cn2.add("a");

    cn2.add("b");

    cn2.add("c");

    cn2.add("d");

    cn2.add("e");

    cn2.add("f");

    cn2.add("g");

    cn2.add("h");

    cn3.add(cn2);

    JTable jt1=new JTable (cn3,cn);

    JTableHeader jth=jt1.getTableHeader();

    this.add(jt1);

    JScrollPane jsp=new JScrollPane (jt1);

    this.add(jsp,BorderLayout.CENTER);

    //处理下部

    JPanel jp2=new JPanel ();

    jp2.setLayout(new GridLayout(4,2));

    JLabel jl1=new JLabel ("借书时间");

    JLabel jl2=new JLabel ("规定时间");

    JLabel jl3=new JLabel ("还书时间");

    JLabel jl4=new JLabel ("罚款金额");

    jtf1=new JTextField ();

    jtf2=new JTextField ("60");

    jtf3=new JTextField ();

    jtf4=new JTextField ();

    jp2.add(jl1);

    jp2.add(jtf1);

    jp2.add(jl2);

    jp2.add(jtf2);

    jp2.add(jl3);

    jp2.add(jtf3);

    jp2.add(jl4);

    jp2.add(jtf4);

    JPanel jp3=new JPanel ();

    jp3.setLayout(new GridLayout(2,2));

    JLabel jl5=new JLabel ("当前时间");

    jtf5=new JTextField ();//输出当前时间

    SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    jtf5.setText(df.format(new Date()));

    JButton **1=new JButton ("归还");

    **1.addActionListener(this);

    JButton **2=new JButton ("退出");

    **2.addActionListener(this);

    jp3.add(jl5);

    jp3.add(jtf5);

    jp3.add(**1);

    jp3.add(**2);

    JPanel jp4=new JPanel ();

    jp4.setLayout(new GridLayout(1,2));

    jp4.add(jp2);

    jp4.add(jp3);

    this.add(jp4,BorderLayout.SOUTH);

    this.setSize(525,600);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    this.setVisible(true);

    this.setTitle("读者还书界面,当前用户为"+user.user_name+"正在使用本系统"); //设置标题

    }

    @Override

    public void actionPerformed(ActionEvent arg0) {

    if (arg0.getSource()==jcb1) {

    System.out.println(jcb1.getSelectedItem().toString());

    }

    if (arg0.getSource()==jcb2) {

    System.out.println(jcb2.getSelectedItem().toString());

    }

    if (arg0.getSource()==jcb3) {

    System.out.println(jcb3.getSelectedItem().toString());

    }

    if (arg0.getSource()==jcb4) {

    System.out.println(jcb4.getSelectedItem().toString());

    }

    if(arg0.getActionCommand().equals("归还")){

    String UserName = "sa";

    String Password = "sa";

    String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

    String Url = "jdbc:sqlserver://127.0.0.1;database=book3";

    try {

    try {

    Class.forName(driverName);

    } catch (ClassNotFoundException e4) {

    // TODO 自动生成的 catch 块

    e4.printStackTrace();

    }

    System.out.println("数据库驱动加载成功");

    con=DriverManager.getConnection(Url,UserName,Password);

    } catch (SQLException e1) {

    // TODO 自动生成的 catch 块

    e1.printStackTrace();

    }

    try {

    if(!con.isClosed()){

    System.out.println("数据库连接成功");

    }

    } catch (SQLException e2) {

    // TODO 自动生成的 catch 块

    e2.printStackTrace();

    }

    sm1 = con.createStatement();

    rs1 = sm1.executeQuery("select * from system_book where book_type='"+jcb1.getSelectedItem().toString()+"' or book_name='"+jcb2.getSelectedItem().toString()+"' or book_author='"+jcb3.getSelectedItem().toString()+"' or book_address='"+jcb4.getSelectedItem().toString()+"' ");

    while(rs1.next()){

    String v=rs1.getString("book_number");

    String v1=rs1.getString("quantity");

    String v3=rs1.getString("book_name");

    int i = sm1.executeUpdate("update system_book set quantity=quantity+1 where book_number='"+v+"'");

    if(i==1){

    System.out.println("更新成功");

    }

    Statement sm2=con.createStatement();

    rs2 = sm2.executeQuery("select rent_date from rent where book_number='"+v+"'");

    while(rs2.next()){

    String a=rs2.getString("rent_date");

    System.out.println(a);

    jtf1.setText(a);//得到借书时间

    //得到还书时间

    SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    jtf3.setText(df.format(new Date()));

    String dateStr=df.format(new Date());

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    long m = sdf.parse(dateStr).getTime() - sdf.parse(a).getTime();

    int days=(int) m / (1000 * 60 * 60 * 24);

    String a4=days+"";

    if(days>60){//同时确定超期次数

    int a5=days-60;

    String a6=a5+"";

    jtf4.setText("+a6+");//得到罚款

    int i3 = sm2.executeUpdate("insert into returnbook values('"+user.user_name+"','"+jtf3.getText()+"','"+v+"','"+v1+"','"+a4+"','overbacktime+1')");

    if(i3==1){

    System.out.println("插入成功");

    }

    int f=sm2.executeUpdate("delete from rent where book_number='"+v+"'");

    if(f==1){

    System.out.println("删除成功");

    }

    int i1 = sm2.executeUpdate("insert into fine values('"+user.user_name+"','"+v+"','"+v3+"','"+a6+"','"+a4+"')");

    if(i1==1){

    System.out.println("插入成功");

    }

    int i11 = sm2.executeUpdate("update creditrating set creditrating=creditrating-1");

    if(i11==1){

    System.out.println("插入成功");

    }

    }

    else {

    String b="0";

    int i2 = sm1.executeUpdate("insert into returnbook values('"+user.user_name+"','"+jtf3.getText()+"','"+v+"','"+v1+"','"+a4+"','"+b+"')");

    if(i2==1){

    System.out.println("插入成功");

    }

    jtf4.setText("0");//罚款为0

    }

    }

    }

    }

    if(arg0.getActionCommand().equals("退出")){

    new userframe();

    }

    }

    }

    展开全文
  • 该楼层疑似违规被系统折叠隐藏此楼查看此楼java查询数据库,有两个查询语句,第二个查询语句以及别的语句要用到第一个查询语句的结果,然后结果集就显示关闭了,怎么办sm1 = con.createStatement();rs1 = sm1....
  • 该楼层疑似违规被系统折叠隐藏此楼查看此楼java查询数据库,有两个查询语句,第二个查询语句以及别的语句要用到第一个查询语句的结果,然后结果集就显示关闭了,怎么办sm1 = con.createStatement();rs1 = sm1....
  • com.microsoft.sqlserver.jdbc.SQLServerException: 结果集已关闭

    万次阅读 多人点赞 2013-03-14 20:09:06
    com.microsoft.sqlserver.jdbc.SQLServerException: 结果集已关闭 提示错误: com.microsoft.sqlserver.jdbc.SQLServerException:结果集已关闭 错误引起原因: ResultSet内嵌套使用ResultSet引起的 ...
  • 结果集已关闭 错误处理方法

    千次阅读 2018-09-04 18:47:12
    网上有很多说法,考虑的程度大多都比较深,但新手犯的错误往往都很简单,这里分享一下我总结的经验: ...所以 先获取output 会导致jdbc 强制结束,发生“结果集已关闭 ” 的错误。 错误: 正确:
  • 该楼层疑似违规被系统折叠隐藏此楼查看此楼java查询数据库,有两个查询语句,第二个查询语句以及别的语句要用到第一个查询语句的结果,然后结果集就显示关闭了,怎么办sm1 = con.createStatement();rs1 = sm1....
  • 依照它所言,程序可以执行并返回数据集,可是在调用rs.next()方法遍历时,总提示数据集已关闭,后来发现如果SQL执行完成后先遍历ResultSet,然后再SQLcstmt.getInt(5)取得output参数值和话就不会出现上述问题,不知...
  • publicResultSetQuery(StringsqlStr){Connectionconn=null;Statementst=null;ResultSetrs=null;try{conn=this.getConnection();st=conn.createStatement();System.out.println("SQL:"...public ResultSet Query(Stri...
  • 原因一、在取出结果之前把rs关闭了(这种情况大家都容易发现和解决) 原因二、违背了jdbc存储过程先检索结果,再检索out参数的顺序 片段代码如下: CallableStatement ps = con.prepareCall(sql); ps....
  • -- 首先检查 --执行SQL select * ...-- 然后 ,遍历结果集  ResultSet res=state.executeQuery("select * from student"); while((res.next()) ////判断是否有记录 {  String textField1=res.getS
  • 该楼层疑似违规被系统折叠隐藏此楼查看此楼String UserName = "sa";String Password = "sa";String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";String Url = "jdbc:sqlserver://127.0.0.1;...
  • 在制作BBS论坛的过程中,根据需要,我计划将数据库的访问、查询操作和查询结果分在两个函数中进行,即在数据库操作类DBAccess中有两个函数(错误代码): private ResultSet executeQuery(String sql) throws ...
  • com.microsoft.sqlserver.jdbc.SQLServerException: 结果集已关闭
  • 报这个错时因为我的java类里是ResultSet内嵌套ResultSet,但是用的同一个Statement,这样不行,得创建两个Statement
  • 问题描述:我在本机数据库测试没有问题,但是连接生产的数据库时会报错java.sql.SQLException:结果集已耗尽,报错的是sname=rs.getString("sname");这句,貌似代码也没什么问题啊,不...问题描述:我在本机数据库...
  • 当涉及到两个查询(无论是否为EF)与一个具有两个结果集的查询(以及在数据读取器上使用 NextResult )时,您将获得一点,但实际上并不多 . 由于只有一个在另一个上方的开销只有非常小的减少,如果结果足够大,你可能会...
  • java - 必须单独关闭JDBC结果集和语句,尽管之后Connection已关闭?据说在使用后关闭所有JDBC资源是一个好习惯。 但是,如果我有以下代码,是否有必要关闭Resultset和Statement?Connection conn = null;...
  • 结果集转换成List时,遇到一个莫名其妙的错误: ResultSetMetaData md = (ResultSetMetaData)rs.getMetaData(); int columnCount = md.getColumnCount(); while(rs.next()){ Map<String,Object>map = new...
  • 有两个可能1、rs ,state和conn没有关闭rs.close(); state.close(); conn.close();if(rs!=null) rs.close; if(state!=null) state.close; if(conn!=null) conn.close;---流程import java.sql.Connection;Connection ...
  • 多次执行 stmt.executeQuery方法,获得的数据集有时为空,有时提醒 结果集已耗尽,有时调用 first()方法等提示对只转发结果集的无效操作: first 经系统研究ResultSet特性后,总结如下: 1.ResultSet rs = stmt....
  • JAVA--结果集已耗尽

    2019-09-22 07:33:25
    1、rs ,state和conn没有关闭 rs.close(); state.close(); conn.close(); if(rs!=null) rs.close; if(state!=null) state.close; if(conn!=null) conn.close; --- 流程 import java.sql.Connection; ...
  • 测量低阻值电阻时为什么测量结果会偏高数字万用表(DMM) 是最常见的测量阻值的工具。一般来说,用数字万用表测量阻值需要经过以下步骤:关闭电路电源把数字万用表调到合适量程的欧姆档。但有时即使我们使用一个良好的...
  • 多活动结果集

    2011-09-14 11:21:42
    碰到错误情况下:VS.NET 中文错误:有打开的与此命令相关联的 DataReader,必须首先将它关闭。VS.NET 英文错误:There is already an open DataReader associated with ...多活动结果集属性设置为真。 错误马上消失。

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 321
精华内容 128
关键字:

结果集已关闭