java.sql.SQLException:无效的句柄

布里奇特

我正在尝试教自己如何在Java中连接到msaccess数据库。我设置了一个类来访问数据库,如下所示

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public abstract class AccessDBConnect2 {
    public static Connection connect(){
        String fileName = "C:/Users/Bridget/Documents/EmployeeSys.accdb";
        Connection con = null;
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+fileName;
            con = DriverManager.getConnection(url,"","");
        } catch (Exception e) {
            // Handle exceptions    ...
            System.out.println(e.toString());
            System.out.println("A problem accessing the database");
            e.printStackTrace();
        } finally {
            try { if(con!=null) {con.close();} } catch (Exception e) {}
        }
        return con;
    }
public static void closeConnection(Connection conn){
    try{
        conn.close();
    }catch (Exception e){

    }
}

然后我有了我的代码,它只是试图从表中选择所有内容。我已经在msAccess中创建了表,并且代码似乎可以顺利通过上述代码中的connect方法,这表明它正在查找数据库并以某种方式对其进行访问。当我使用连接(即代码行)调用prepareStatement时,就会发生问题:

stm = conn.prepareStatement(sql);

完整的代码是:

import java.sql.*;
public class Program2{
public static void main(String[] args) {
        try{
            // Load the JDBC driver
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();

        // Establishing db connection
        Connection conn = AccessDBConnect.connect();

        // Displaying all records from employee file
        System.out.println("Display records of all employees");
        display(conn);

        // Closing the connection
        AccessDBConnect.closeConnection(conn);
    }catch (Exception e){
        System.out.println("Error");
    }
}

// Display details of all employees
public static void display(Connection conn){
    PreparedStatement stm = null;
    // SQL statement
    String sql = "SELECT * FROM Employee";
    ResultSet rs;
    try {
        stm = conn.prepareStatement(sql);   // Prepare the SQL statement
        rs = stm.executeQuery();            // Execture the SQL statement

        // Navigate through the ResultSet and print
        while (rs.next()){
            int id = rs.getInt("id");
            String name = rs.getString("name");
            String gender = rs.getString("gender");
            String address = rs.getString("address");

            System.out.println("ID: \t \t" + id);
            System.out.println("Name: \t \t" + name);
            System.out.println("Gender: \t" + gender);
            System.out.println("Address: \t" + address);
            System.out.println(" ");
        }

    // Closing the resultSet
    rs.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

public void test(){
    int a = "hello";
}

}

戈德·汤普森

您收到错误的原因是,当您尝试调用.prepareStatement连接时,该连接已关闭。您的AccessDBConnect2课程包含一个finally块,块在连接返回之前将其关闭。修复该类,以使连接保持打开状态。

顺便说一句,JDBC-ODBC桥已从Java 8中删除,实际上已经过时了。您可能对此替代方案感兴趣:

在不使用ODBC的情况下从Java操作Access数据库

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无效的游标状态java.sql.SQLException

来自分类Dev

Hibernate java.sql.SQLException:无效的列名

来自分类Dev

java.sql.SQLException:调用中的无效参数

来自分类Dev

错误:java.sql.SqlException:无效的列类型

来自分类Dev

PreparedStatementCallback;SQL[SQLStatememnt] 的无效结果集访问;嵌套异常是java.sql.SQLException:无效的列索引Spring Auth

来自分类Dev

java.sql.SQLException:在连接缓存中发现无效或陈旧的连接

来自分类Dev

java.sql.SQLException:ORA-06576:无效的函数或过程名称

来自分类Dev

java.sql.SQLException:ORA-01017:无效的用户名/密码;登录被拒绝

来自分类Dev

java.sql.SQLException:从 jdbc 执行包级别类型的过程时列类型无效

来自分类Dev

如何从 MyBatis 获取 Map<String, Integer> ?原因:java.sql.SQLException:getInt() 的值无效 - 'NONE'

来自分类Dev

java.sql.SQLException:ORA-01843:无效的月份(在SQL DEVELOPER中工作,在JAVA中不工作)

来自分类Dev

无法获得,因为SQL错误java.sql.SQLException中的从我的表中的数据:无效值getInt()?

来自分类Dev

SQL 状态 [99999];错误代码 [17004]; 列类型无效;嵌套异常是 java.sql.SQLException: Invalid column type

来自分类Dev

换行宪章\ n给出“ java.sql.SQLException:ORA-00911:无效字符\ n” Oracle 11g

来自分类Dev

javax.servlet.jsp.JspException:无法建立连接,DataSource无效:“ java.sql.SQLException:未找到合适的驱动程序”

来自分类Dev

SQL异常列无效,java sql语句

来自分类Dev

记录java.sql.SQLException导致溢出

来自分类Dev

java.sql.SQLException:连接已关闭

来自分类Dev

找不到java.sql.sqlexception列

来自分类Dev

java.sql.SQLException:ResultSet已关闭

来自分类Dev

java.sql.SQLException:连接已关闭

来自分类Dev

java.sql.SQLException:常规错误

来自分类Dev

记录java.sql.SQLException导致溢出

来自分类Dev

错误消息:无法获得连接,数据源无效:“ java.sql.SQLException:无法为连接URL'null'创建类'的JDBC驱动程序”

来自分类Dev

信息:服务器在1054毫秒中启动java.sql.SQLException:ORA-00904:“ USHA”:无效的标识符

来自分类Dev

java.sql.SQLException:在结果集Java开始之前

来自分类Dev

java.sql.SQLException:在org.hsqldb.jdbc.JDBCUtil.sqlException处关闭SQL语句

来自分类Dev

java.sql.SQLException: No value specified for parameter 2

来自分类Dev

java.sql.SQLException:智能大对象错误notifyix

Related 相关文章

  1. 1

    无效的游标状态java.sql.SQLException

  2. 2

    Hibernate java.sql.SQLException:无效的列名

  3. 3

    java.sql.SQLException:调用中的无效参数

  4. 4

    错误:java.sql.SqlException:无效的列类型

  5. 5

    PreparedStatementCallback;SQL[SQLStatememnt] 的无效结果集访问;嵌套异常是java.sql.SQLException:无效的列索引Spring Auth

  6. 6

    java.sql.SQLException:在连接缓存中发现无效或陈旧的连接

  7. 7

    java.sql.SQLException:ORA-06576:无效的函数或过程名称

  8. 8

    java.sql.SQLException:ORA-01017:无效的用户名/密码;登录被拒绝

  9. 9

    java.sql.SQLException:从 jdbc 执行包级别类型的过程时列类型无效

  10. 10

    如何从 MyBatis 获取 Map<String, Integer> ?原因:java.sql.SQLException:getInt() 的值无效 - 'NONE'

  11. 11

    java.sql.SQLException:ORA-01843:无效的月份(在SQL DEVELOPER中工作,在JAVA中不工作)

  12. 12

    无法获得,因为SQL错误java.sql.SQLException中的从我的表中的数据:无效值getInt()?

  13. 13

    SQL 状态 [99999];错误代码 [17004]; 列类型无效;嵌套异常是 java.sql.SQLException: Invalid column type

  14. 14

    换行宪章\ n给出“ java.sql.SQLException:ORA-00911:无效字符\ n” Oracle 11g

  15. 15

    javax.servlet.jsp.JspException:无法建立连接,DataSource无效:“ java.sql.SQLException:未找到合适的驱动程序”

  16. 16

    SQL异常列无效,java sql语句

  17. 17

    记录java.sql.SQLException导致溢出

  18. 18

    java.sql.SQLException:连接已关闭

  19. 19

    找不到java.sql.sqlexception列

  20. 20

    java.sql.SQLException:ResultSet已关闭

  21. 21

    java.sql.SQLException:连接已关闭

  22. 22

    java.sql.SQLException:常规错误

  23. 23

    记录java.sql.SQLException导致溢出

  24. 24

    错误消息:无法获得连接,数据源无效:“ java.sql.SQLException:无法为连接URL'null'创建类'的JDBC驱动程序”

  25. 25

    信息:服务器在1054毫秒中启动java.sql.SQLException:ORA-00904:“ USHA”:无效的标识符

  26. 26

    java.sql.SQLException:在结果集Java开始之前

  27. 27

    java.sql.SQLException:在org.hsqldb.jdbc.JDBCUtil.sqlException处关闭SQL语句

  28. 28

    java.sql.SQLException: No value specified for parameter 2

  29. 29

    java.sql.SQLException:智能大对象错误notifyix

热门标签

归档