Haz*_*Ali 1 java ms-access jdbc
谁能帮我?我已经尝试解决这个问题一小时了,我仍然感到困惑.下面是我的代码,我在编译时遇到此错误.
输出消息::
DriverLoaded
Could Not Connect to Databasejava.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at DBConnect.<init>(DBConnect.java:11)
at DBConnect.main(DBConnect.java:21)
Run Code Online (Sandbox Code Playgroud)
码::
import java.sql.*;
public class DBConnect {
public DBConnect() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("DriverLoaded");
String url = "jdbc:odbc:; DRIVER = Microsoft Access Driver (*.mdb, *.accdb); DBQ = DB.accdb";
Connection con = DriverManager.getConnection(url);
System.out.println("Connection Established Successfully");
} catch(Exception e) {
e.printStackTrace();
System.out.println("Could Not Connect to Database");
}
}
public static void main (String args[]) {
DBConnect dbcon = new DBConnect();
}
}
Run Code Online (Sandbox Code Playgroud)
重载方法 getConnection()
1)
getConnection( String url, Properties info )
url - jdbc:subprotocol:subname形式的数据库URL
info - 作为连接参数的任意字符串标记/值对的列表; 通常至少应包含"用户"和"密码"属性
2)
getConnection( String url, String user, String password )
url - jdbc:subprotocol:subname形式的数据库URL
user - 代表Connection进行连接的数据库用户
password - 用户的密码
3) getConnection( String url )
url - jdbc:subprotocol:subname形式的数据库URL
考虑到你正在使用最后一个构造函数,似乎你的url语法不正确.我不熟悉MS Access,但我会在另一个答案中提供一个建议.
这是你的语法
"jdbc:odbc:; DRIVER = Microsoft Access Driver (*.mdb, *.accdb); DBQ = DB.accdb"
Run Code Online (Sandbox Code Playgroud)
我找到的正确语法是
File f = new File("\\\\***\\***\\****\\***.accdb");
"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + f.getAbsolutePath();
Run Code Online (Sandbox Code Playgroud)
看起来你在odbc之后有一个不必要的分号和一个额外的空格.也许你想尝试上面的语法,看看会发生什么.我不确定文件部分,但如果您的网址在进行分号/空格修复后仍然失败,您可能需要查看它.
有关另一个选项连接用户名和密码的更多信息,请查看此问题