Iam尝试使用ms-access连接java时出现以下错误
java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at msaccesssample.sample.main(sample.java:11)
这是我的java代码
package msaccesssample;
import java.sql.*;
public class sample {
public static void main(String[] args)
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:satish");
Statement st = con.createStatement();
ResultSet rs=st.executeQuery("select * from sample");
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
实际上我创建了作为DSN的satish并添加了数据库名称test.accdb.问题已经在论坛中被多次询问但我不知道它是一个驱动程序问题或编程问题。我的系统是64位与Windows 8和我odbc是32位。我无法获得64位的ms访问驱动程序。有没有办法在64位加载ms访问驱动程序??????
答案 0 :(得分:0)
您正在使用JDBC ODBC Bridge驱动程序,它是Java Runtime的一部分。你可以尝试这个简单的测试,做一个理智,采取from reference:
import java.sql.*;
public class LoadJdbcOdbcDriver {
public static void main(String [] args) {
Connection con = null;
try {
// Load the JDBC-ODBC bridge driver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
System.out.println("JDBC-ODBC driver loaded ok.");
} catch (Exception e) {
System.err.println("Exception: "+e.getMessage());
}
}
}
这应该给你输出:
C:\>javac LoadJdbcOdbcDriver.java
C:\>java LoadJdbcOdbcDriver
JDBC-ODBC driver loaded ok.
如果再次获得ClassNotFound,则表示路径中不存在rt.jar。检查你的JAVA_HOME和PATH,检查rt.jar是否可用。