如何将java连接到Ms Access 2010?
有没有人有任何关于如何将Access 2010连接到java jdbc的想法。我用这个方法,但是当我把它称为,这是行不通的:如何将java连接到Ms Access 2010?
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
创建连接
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()在其他一些托盘。 – 2011-06-14 05:03:30
声明它公开它将工作我也编辑了代码。 – Rishabh 2011-06-14 05:39:21
拼写错误?也许这行:
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数据库。 (http://www.microsoft.com/en-us/download/details.aspx?id=13255) – Barett 2012-12-21 06:42:00
Rishab的答复让我连接到我的Access数据库。
我下面的代码修正:
而不是
String url = "jdbc:odbc:anime"; //anime is the database
我做
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=" + "d://institute//institutedata.accdb";
我明确定义的驱动程序,并与路径和扩展完整的数据库名。
使用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")
此外,你应该接受问题的答案,如果你发现它们很有用(请参阅这里有一个勾号)和也使用upvotes。它会帮助你获得更多答案。 – Rishabh 2011-06-14 11:32:58
请注意,JDBC-ODBC Bridge已从Java 8中删除,并且不受支持(参考:[here](http://docs.oracle.com/javase/7/docs/technotes/guides/jdbc /bridge.html)和[这里](http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6345277))。 [UCanAccess](http://ucanaccess.sourceforge.net/site.html)是一个流行的替代方案(详细信息[here](http://stackoverflow.com/q/21955256/2144390))。 – 2015-03-20 13:23:21