初学java 链接access数据库。
数据库meeting表有两个字段:StartTime和EndTime,数据格式都是短时间(hh:nn);
现在想查询符合时间在[start,end]之间的记录,代码如下,ResultSet verify_time(String start,String end,String usrName) throws SQLException {
        ResultSet rs=ac.query("select * from Meeting where (( StartTime<#"+start+"# and EndTime>#"+start+"#) or (StartTime<#"+end+"# and EndTime>#"+end+"#)) and (First='"+usrName+"' or  Second='"+usrName+"')");
        return rs;
    }ac.query 是数据层的函数
    public ResultSet query(String cmd) throws SQLException {
        return sql.executeQuery(cmd);
    }void add(String usrName, String Password, String other, String start, String end, String title) throws SQLException {
        ResultSet rs=verify_time(start,end,usrName);        
        if(!rs.next()){//执行到这出现resultset is closed 错误,请问怎么办?
                ac.update("insert into Meeting (First,Second,StartTime,EndTime,Title) values ('"+usrName+"','"+other +"','"+start+"','"+end+"','"+title+"')");
        }
        else
            System.out.println("Already One Meeting During This Time at Least!");
        display(usrName);
    }初学java很多不懂,请帮忙~~

解决方案 »

  1.   

    RS.next 可以改为MoveNext 试下
      

  2.   

    ResultSet verify_time(String start,String end,String usrName) throws SQLException { 
            ResultSet rs=ac.query("select * from Meeting where (( StartTime <#"+start+"# and EndTime>#"+start+"#) or (StartTime <#"+end+"# and EndTime>#"+end+"#)) and (First='"+usrName+"' or  Second='"+usrName+"')"); 
            return rs; 
        } 
     
    ResultSet不般都不用来做返回的,因为你的Connection在用完后一般都需要关闭,当Connection关闭后你返回的rs就没什么意思义了.你可以把rs里面东西放在一个List里,然后返回一个List
      

  3.   

    给你个样例你参考下:
    import java.sql.*;
    public class TestAccess {
    public static void main(String[] args) {
    try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    //DBTest.mdb是C盘下access文件
    String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=c:\\DBTest.mdb";
    String user="";
    String password="";
    Connection con=null;
    Statement st=null;
    ResultSet rs=null;
    con=DriverManager.getConnection(url, user, password);
    st=con.createStatement();

    rs=st.executeQuery("select * from student");
    System.out.println("编号\t"+"姓名\t"+"性别");
    while(rs.next())
    {
    System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));
    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
      

  4.   

    如果用的话还是
    ResultSet不要用来做返回,因为你的Connection在用完后一般都需要关闭,当Connection关闭后你返回的rs就没什么意思义了.你可以把rs里面东西放在一个List里,然后返回一个List