gpt4 book ai didi

java - 无法连接到 MS Access 数据库?

转载 作者:行者123 更新时间:2023-12-01 12:08:16 24 4
gpt4 key购买 nike

我正在 eclipse 中构建一个 android 应用程序,但无法连接到我的 MS Access 数据库。我使用的是在网上找到的代码,它使用的是 JTBS,但我不希望我的数据库位于服务器上,所以我进行了更改它到 ODBC。(我是一个初学者,所以请记住我的错误可能是非常基本或愚蠢的)这是我的代码:

import java.sql.*;

public final class Database
{

public Connection connectionObj;
private Statement statement;
public static Database dataBase;
ResultSet res ;

Database()
{
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/Users/barw1_000/Desktop/Projects/SwinApp;";
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String userName = "";
String password = "";

try
{

Class.forName(driver).newInstance();
this.connectionObj = (Connection)DriverManager.getConnection(url,userName,password);

}
catch (Exception sqle)
{
sqle.printStackTrace();
}
}
/**
*
* @return MysqlConnect Database connection object
*/
public static synchronized Database getDbCon()
{
if ( dataBase == null )
{
dataBase = new Database();
}
return dataBase;

}
/**
*
* @param query String The query to be executed
* @return a ResultSet object containing the results or null if not available
* @throws SQLException
*/
public ResultSet query(String query) throws SQLException
{
statement = dataBase.connectionObj.createStatement();
res = statement.executeQuery(query);
return res;
}
/**
* @desc Method to insert data to a table
* @param insertQuery String The Insert query
* @return boolean
* @throws SQLException
*/
public int insert(String insertQuery) throws SQLException
{
statement = dataBase.connectionObj.createStatement();
int result = statement.executeUpdate(insertQuery);
return result;

}

}

显示的错误是:

Invalid layout of java.lang.String at value
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (javaClasses.cpp:126), pid=7136, tid=4712
# fatal error: Invalid layout of preloaded class
#
# JRE version: (8.0_25-b18) (build )
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.25-b02 mixed mode windows-amd64 compressed oops)
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\Users\barw1_000\Desktop\Projects\SwinApp\SwimApp\hs_err_pid7136.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
#

我也不知道如何在应用程序中使用此数据库,因此如果您能给我任何有关它的信息,那就太好了。

最佳答案

您的错误显示 JRE 版本:(8.0_25-b18) 表明您正在使用 Java 8。JDBC-ODBC 桥已从 Java 8 中删除,因此您无法使用 ODBC。

您也许可以使用 UCanAccess JDBC 驱动程序(设置详细信息 here )。 UCanAccess 使用 HSQLDB 作为后备数据库,在存储或内存中保留 Access 数据库的重复副本,因此这对于 Android 应用程序来说可能有点资源密集型。

更轻量级的解决方案是使用 Jackcess它直接更新 Access 数据库文件,但您将无法使用 SQL。相反,您必须使用 Jackcess API,它非常强大,但与 SQL 也有很大不同。

最后,正如对其他(相同)问题的评论中提到的,您可能需要重新考虑使用 Access 数据库文件并改用 SQLite。

关于java - 无法连接到 MS Access 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27426796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com