在未安装MS Access的情况下将Java连接到MS Access数据库
我已经创建了一个CRUD应用程序,下面给出了该应用程序的连接方法。我已经在我的计算机上进行了测试,工作正常,但在另一台未安装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.
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基础数据库中的数据。我相信底层数据库体系结构是(或曾经是),因此您可能会在那里找到更多最新信息。