Ms access &引用;“常规错误无法打开注册表项临时(易失性)…”;从Access ODBC

Ms access &引用;“常规错误无法打开注册表项临时(易失性)…”;从Access ODBC,ms-access,odbc,pyodbc,jdbc-odbc,Ms Access,Odbc,Pyodbc,Jdbc Odbc,我尝试了以下方法: private String password = ""; private String dbName = "dataHC.accdb"; private String bd = dbName + ";PWD=" + password; String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+bd+";"; private Connection conn = nul

我尝试了以下方法:

private String password = "";
private String dbName = "dataHC.accdb";
private String bd = dbName + ";PWD=" + password;
String  url   = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+bd+";";

private Connection conn = null;

//Connect
public void connect() {
    try{
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        conn = DriverManager.getConnection(url);
        if (conn != null)
            System.out.println("Conexión a base de datos "+dbName+". listo");
    }catch(SQLException e){
        System.out.println(e);
    }catch(ClassNotFoundException e){
        System.out.println(e);
    }
}
字体:

我得到了这个错误:

[Microsoft][ODBC Microsoft Access驱动程序]一般错误无法打开进程0x7f8线程0x1174 DBC的注册表项临时(易失性)Ace DSN

具体地

java.sql.SQLException:[Microsoft][ODBC Microsoft Access驱动程序]常规错误无法打开进程0x7f8线程0x1174 DBC 0x8dc8d78 Jet'的注册表项临时(易失性)Ace DSN。
线程“main”java.lang.NullPointerException中出现异常
在depuracionDB.consultap(depuracionDB.java:67)
位于depuracionDB.main(depuracionDB.java:103)
我正在使用eclipse IDE Luna和Java版本“1.7.0_45”(64位)

我想这个链接可以帮助你

我想这个链接可以帮助你

原因 常规错误无法打开进程的注册表项临时(易失性)Ace DSN

这是Access数据库引擎(又称“ACE”)ODBC驱动程序在当前进程由于以下原因之一无法打开Access数据库文件时生成的顶级错误消息:

  • 其他一些进程“以独占方式”打开了数据库

  • 其他一些进程最初在Access中以“共享”和 具有一些挂起的结构修改,需要对文件进行“独占”访问。此类挂起修改的示例包括对尚未保存的模块代码的编辑,或在设计视图中打开表单或报表

  • 运行当前进程的帐户没有足够的文件系统权限来打开数据库文件或其所在的文件夹

  • 运行当前进程的帐户没有足够的注册表权限访问
    HKLM\SOFTWARE\ODBC
    项下的值

  • 数据库文件根本不存在

  • 您试图打开的数据库需要更新版本的Microsoft Access

  • 当只报告顶级错误消息时,早期的“Jet”ODBC驱动程序会生成更直观的错误消息。当另一个进程对文件执行“打开独占”操作时,错误消息为

    无法使用“(未知)”;文件已在使用中

    当文件有待定的设计更改时,错误消息说

    未知用户已将数据库置于阻止其打开或锁定的状态

    然而,当我们只看到ACE ODBC驱动程序生成的顶级消息时,我们看到的只是

    常规错误无法打开进程的注册表项临时(易失性)Ace DSN

    这是因为两个驱动程序都返回多个错误消息,但它们的返回顺序不同。喷气式飞机的信息是

    错误[HY000][Microsoft][ODBC Microsoft Access Driver]未知用户已将数据库置于无法打开或锁定的状态

    错误[01000][Microsoft][ODBC Microsoft Access驱动程序]一般警告无法打开注册表项“进程0xed4线程0x1204 DBC 0xab004 Jet的临时(易失性)Jet DSN”

    错误[IM006][Microsoft][ODBC驱动程序管理器]驱动程序的SQLSetConnectAttr失败

    错误[01000][Microsoft][ODBC Microsoft Access驱动程序]一般警告无法打开注册表项“进程0xed4线程0x1204 DBC 0xab004 Jet的临时(易失性)Jet DSN”

    错误[HY000][Microsoft][ODBC Microsoft Access Driver]未知用户已将数据库置于无法打开或锁定的状态

    。。。ACE信息包括:

    错误[HY000][Microsoft][ODBC Microsoft Access驱动程序]常规错误无法打开进程0xf6c线程0x1568 DBC 0x6347fec Jet'的注册表项临时(易失性)Ace DSN

    错误[IM006][Microsoft][ODBC驱动程序管理器]驱动程序的SQLSetConnectAttr失败

    错误[HY000][Microsoft][ODBC Microsoft Access驱动程序]常规错误无法打开进程0xf6c线程0x1568 DBC 0x6347fec Jet'的注册表项临时(易失性)Ace DSN

    错误[HY000][Microsoft][ODBC Microsoft Access Driver]未知用户已将数据库置于无法打开或锁定的状态

    错误[HY000][Microsoft][ODBC Microsoft Access驱动程序]常规错误无法打开进程0xf6c线程0x1568 DBC 0x6347fec Jet'的注册表项临时(易失性)Ace DSN

    错误[HY000][Microsoft][ODBC Microsoft Access驱动程序]常规错误无法打开进程0xf6c线程0x1568 DBC 0x6347fec Jet'的注册表项临时(易失性)Ace DSN

    错误[HY000][Microsoft][ODBC Microsoft Access Driver]未知用户已将数据库置于无法打开或锁定的状态

    解决 场景1和场景2(另一个进程对文件具有“独占”锁定): 确保数据库文件未被任何其他进程打开(通常这意味着仅关闭Access应用程序本身),然后从外部应用程序重试ODBC操作。重新启动计算机是确保任何其他此类进程已终止并放弃对数据库文件的声明的一种方法

    场景3(文件/文件夹权限不足): 调整权限或将文件移动到用户可以打开文件的位置。将数据库文件放在驱动器的根文件夹中是导致此类问题的常见原因

    场景4(注册表权限不足): 形容词
      try
                {
                             String conUrl = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + filepath;
    
                           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                               con=DriverManager.getConnection(conUrl);
                }
                catch(SQLException s)
                {
                       System.out.println(s);
                }
    
    String database="C:/Users/GIRI/Desktop/fdsfkdsfj/abc.accdb";
    String url="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + database + ";DriverID=22;READONLY=true";
    
    package dbase.dbconnection;
    
    import java.sql.*;
    
    public class MSAccessDbConnect {
    
        public static void main(String args[]) throws Exception {
    
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    
            String password = "";
            String dbName = "D:/maven_ejb_train/DATA/EmpTest.accdb";
            String bd = dbName; // + ";PWD=" + password;
    
            String connURL = "jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="
                    + dbName;
            System.out.println("connURL ===== " + connURL);
    
            String sql2 = "select * from Employees ";
    
            Connection conn = DriverManager.getConnection(connURL, "", "");
            System.out.println("aaa 111");
            ResultSet rs = conn.createStatement().executeQuery(sql2);
            System.out.println("aaa 222");
    
            while (rs.next()) {
                System.out.println("Name: " + rs.getString("EMP_NA") + " ID: "
                        + rs.getString("EMP_NO"));
    
            }
            rs.close();
            conn.close();
        }
    }