如何将 java 连接到 Ms Access 2010?
Posted
技术标签:
【中文标题】如何将 java 连接到 Ms Access 2010?【英文标题】:How to connect java to Ms Access 2010? 【发布时间】:2011-06-14 04:27:58 【问题描述】:有没有人知道如何将 Access 2010 连接到 java jdbc。我用这个方法,但是调用的时候就不行了:
public void loadDb()
try
Class.forName("sun.jdbc.JdbcOdbcDriver");
File f = new File(System.getProperty("user.dir"))
con = DriverManager.getConnection("jdbc:odbc:Driver=Microsoft Acess Driver (*.mdb, *.accdb); DBQ="+ f.getPath() + "//db//JavaAccess.accd","","");
st = con. createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
catch(ClassNotFoundException e)e.printStackTrace();
catch(SQLException e)e.printStackTrace();
//con and st are already defined
【问题讨论】:
此外,如果您发现问题的答案很有用,您应该接受它们的答案(请参阅那里有一个勾号)并使用upvotes。它将帮助您获得更多答案。 请注意,JDBC-ODBC 桥已从 Java 8 中删除并且不受支持(参考:here 和 here)。 UCanAccess 是一种流行的替代方案(详情 here)。 【参考方案1】:根据msdn 应该是sun.jdbc.odbc.JdbcOdbcDriver
。所以替换这行代码:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
【讨论】:
【参考方案2】:拼写错误?也许这一行:
con = DriverManager.getConnection("jdbc:odbc:Driver=Microsoft Acess Driver (*.mdb, *.accdb); DBQ="+ f.getPath() + "//db//JavaAccess.accd","","");
应该是
con = DriverManager.getConnection("jdbc:odbc:Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ="+ f.getPath() + "//db//JavaAccess.accd","","");
Access 有 2 个 C
【讨论】:
对于运行 Office 64 位的 64 位系统来说,这是一个更好的解决方案。您可能还需要 Access 数据库引擎通过 64 位接口公开 32 位 Access 数据库。 (microsoft.com/en-us/download/details.aspx?id=13255)【参考方案3】:创建连接
public static Connection getConnection()
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:anime"; //anime is the database
String username = "ipieluser"; //leave blank if none
String password = "ipielpassword"; //leave blank if none
try
Class.forName(driver);
catch (ClassNotFoundException e)
e.printStackTrace();
try
return DriverManager.getConnection(url, username, password);
catch (SQLException e)
// TODO Auto-generated catch block
e.printStackTrace();
return null;
如何打电话:
public static void main(String args[])
try
Connection conn = getConnection();
Statement st = conn.createStatement();
st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM localTable");
//get and displays the number of columns
ResultSetMetaData rsMetaData = rs.getMetaData();
int numberOfColumns = rsMetaData.getColumnCount();
System.out.println("resultSet MetaData column Count=" + numberOfColumns);
st.close();
conn.close();
catch(Exception e)
System.out.println(e.getMessage());
【讨论】:
嗨,我仍然无法访问 getConnection() 方法,因为它说类型为 void 不能返回,另一方面,它不识别方法 getConnection()其他一些地方。 将其声明为公开它会起作用我也编辑了代码。【参考方案4】:使用UCanAccess JDBC 驱动:
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); // can be omitted in most cases
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://<mdb or accdb file path>",user, password);
例如:
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://c:/pippo.mdb");
因此,对于您的示例,它将是
con = DriverManager.getConnection("jdbc:ucanaccess://"+f.getPath()+"/db/JavaAccess.accd")
【讨论】:
【参考方案5】:Rishab 的回复帮助我连接到我的访问数据库。
我在代码中做了以下更正:
代替
String url = "jdbc:odbc:anime"; //anime is the database
我做到了
String url = "jdbc:odbc:Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ=" + "d://institute//institutedata.accdb";
我用路径和扩展名明确定义了驱动程序和完整的数据库名称。
【讨论】:
【参考方案6】:今天才遇到同样的问题,发现要检查java的版本,如果你 java的版本 如果java的版本在7以上,那么sun.jdbc.odbc.JdbcOdbcDriver将不被支持,所以只需检查java的版本。
【讨论】:
以上是关于如何将 java 连接到 Ms Access 2010?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 MS ACCESS 连接到 Android 应用程序
如何将 .NET Core ASP 应用程序连接到 MS Access 数据库