Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在未安装MS Access的情况下将Java连接到MS Access数据库_Java_Ms Access - Fatal编程技术网

在未安装MS Access的情况下将Java连接到MS Access数据库

在未安装MS Access的情况下将Java连接到MS Access数据库,java,ms-access,Java,Ms Access,我已经创建了一个CRUD应用程序,下面给出了该应用程序的连接方法。我已经在我的计算机上进行了测试,工作正常,但在另一台未安装MS Access的计算机上测试时,它抛出了NullPointerException 那么,我应该做些什么来纠正这个问题呢?是否有用于连接到.mdb文件的库 它们也应该在Linux上运行。如果库可用,我可以将.mdb文件转换为Open Office Base void DoConnect() { try{ String current = new java.

我已经创建了一个CRUD应用程序,下面给出了该应用程序的连接方法。我已经在我的计算机上进行了测试,工作正常,但在另一台未安装MS Access的计算机上测试时,它抛出了
NullPointerException

那么,我应该做些什么来纠正这个问题呢?是否有用于连接到.mdb文件的库

它们也应该在Linux上运行。如果库可用,我可以将.mdb文件转换为Open Office Base

void DoConnect()
{
    try{
    String current = new java.io.File( "." ).getCanonicalPath();
    current+="\\DataBases\\Quiz.mdb";
    String host = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+current+";";
    String uName = "";
    String uPass = "";
    con=new Connection[Size];
    stmt=new Statement[Size];
    for(int i=0;i<Size;i++)
    {
        con[i]=DriverManager.getConnection(host, uName, uPass);
        stmt[i]=con[i].createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
    }
    ts=stmt[0].executeQuery("SELECT * FROM Quiz");
    ts.first();
    rs=stmt[1].executeQuery("SELECT ANSW FROM Quiz");       

    System.out.print(rs.getString("STM1"));
    }catch (IOException | SQLException err) {

    }      
}
void DoConnect()
{
试一试{
字符串current=new java.io.File(“.”).getCanonicalPath();
当前+=“\\DataBases\\quick.mdb”;
String host=“jdbc:odbc:Driver={Microsoft Access驱动程序(*.mdb)};DBQ=“+current+”;”;
字符串uName=“”;
字符串uPass=“”;
con=新连接[尺寸];
stmt=新语句[大小];
对于(int i=0;i
是否有用于连接mdb文件的库

是的,有。Jet数据库引擎随Windows提供,但只有32位版本可用。如果您的应用程序以64位进程运行,则需要在计算机上安装64位版本的Access数据库引擎(又称ACE)。您可以在此处下载Access数据库引擎:

请注意,要使用Access数据库引擎,您可能需要将连接字符串调整为

String host = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+current+";";
…如果在未安装Access数据库引擎的32位机器上(即仅安装Jet数据库引擎的机器)无法执行此操作,则您的代码可能必须

  • 首先尝试Jet连接字符串(即原始连接字符串),如果失败,则

  • 尝试ACE连接字符串(即此答案中的字符串)

  • 是否有用于连接mdb文件的库

    是的,有。Jet数据库引擎随Windows提供,但只有32位版本可用。如果您的应用程序以64位进程运行,则需要在计算机上安装64位版本的Access数据库引擎(又称ACE)。您可以在此处下载Access数据库引擎:

    请注意,要使用Access数据库引擎,您可能需要将连接字符串调整为

    String host = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+current+";";
    
    …如果在未安装Access数据库引擎的32位机器上(即仅安装Jet数据库引擎的机器)无法执行此操作,则您的代码可能必须

  • 首先尝试Jet连接字符串(即原始连接字符串),如果失败,则

  • 尝试ACE连接字符串(即此答案中的字符串)


  • 如果没有在所有客户端计算机上安装Access,则连接到Access不是一件容易的任务。 此外,Access数据库规模巨大。 所以我目前正在使用H2数据库,它非常容易使用。 关于大小,在我将一个140 Mb的Access数据库复制到H2之后,该文件只有732 Kb


    可以找到更多信息

    如果您没有在所有客户端计算机上安装Access,那么连接到Access并非易事。 此外,Access数据库规模巨大。 所以我目前正在使用H2数据库,它非常容易使用。 关于大小,在我将一个140 Mb的Access数据库复制到H2之后,该文件只有732 Kb


    可以找到更多信息

    哪一行引发异常?con[i]=DriverManager.getConnection(主机,uName,uPass);哪一行引发异常?con[i]=DriverManager.getConnection(主机,uName,uPass);那么OpenOffice库呢?我想让程序在Linux上运行Too@SidharthVinod上次我检查时,没有ODBC驱动程序用于访问开放式Office基础数据库中的数据。我相信底层数据库体系结构是(或曾经是),因此您可能会在那里找到更多最新信息。OpenOffice库呢?我希望该程序在Linux上运行Too@SidharthVinod上次我检查时,没有ODBC驱动程序用于访问开放式Office基础数据库中的数据。我相信底层数据库体系结构是(或曾经是),因此您可能会在那里找到更多最新信息。