[英]Cannot connect to MS Access Database?
我正在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 version: (8.0_25-b18)
表示您正在使用JRE version: (8.0_25-b18)
已從Java 8中刪除,因此您無法使用ODBC。
您也許可以使用UCanAccess JDBC驅動程序( 此處的設置詳細信息)。 UCanAccess使用HSQLDB作為后備數據庫,在存儲或內存中保留Access數據庫的重復副本,因此對於Android應用程序可能會占用一些資源。
一個更輕量級的解決方案是使用Jackcess ,它可以直接更新Access數據庫文件,但是您將無法使用SQL。 相反,您將不得不使用Jackcess API,該API非常強大,但與SQL也有很大不同。
最后,如對其他(相同)問題的評論中所述,您可能想重新考慮使用Access數據庫文件,而改用SQLite。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.