关于jdbc驱动直接连接access数据库的问题

时间:2023-02-02 13:31:37
我不想用jdbc-odbc桥连接,我就想直接用本地协议驱动(就是jdbc驱动方法的type4)
P.S.我是想用jsp在网页上做一个实现数据库增删改查的小程序,jdk是1.8
那么问题来了:
1.我下载了access的驱动“Access_JDBC30.jar”,我应该怎么用它呢? 把它放在jre/lib 里么?
2.jdbc如何加载access驱动呢? 就是Class.forName(); 括号里填什么啊?
3.之后的连接,access的url应该怎么写?

小弟比较笨,在百度上找了2天了问题还没解决,望各位大哥能帮小弟解答疑惑,先谢谢啦!

11 个解决方案

#1


   try {
            Class.forName("com.hxtt.sql.access.AccessDriver").newInstance();
            String url = "jdbc:Access:///c:/a/db.mdb";
            conn = DriverManager.getConnection(url, "", "");
        } catch (Exception e) {
            e.printStackTrace();
        }

#2


引用 1 楼 bichir 的回复:
   try {
            Class.forName("com.hxtt.sql.access.AccessDriver").newInstance();
            String url = "jdbc:Access:///c:/a/db.mdb";
            conn = DriverManager.getConnection(url, "", "");
        } catch (Exception e) {
            e.printStackTrace();
        }


太谢谢了大哥! 一下就解决了,太专业了。你的方法我之前在百度上看到了,可是没弄明白和真理擦肩而过,幸好又遇到了你。
可是我还有一个问题,就是我用的是ACCESS 2013,不知道怎么的后缀名是.accdb就有错误,说.accdb后缀名不是数据库文件必须把数据库文件改成.mdb

#3


啥都知道了,还问个啥,自己琢磨呗。

引用 2 楼 u010387972 的回复:
Quote: 引用 1 楼 bichir 的回复:

   try {
            Class.forName("com.hxtt.sql.access.AccessDriver").newInstance();
            String url = "jdbc:Access:///c:/a/db.mdb";
            conn = DriverManager.getConnection(url, "", "");
        } catch (Exception e) {
            e.printStackTrace();
        }


太谢谢了大哥! 一下就解决了,太专业了。你的方法我之前在百度上看到了,可是没弄明白和真理擦肩而过,幸好又遇到了你。
可是我还有一个问题,就是我用的是ACCESS 2013,不知道怎么的后缀名是.accdb就有错误,说.accdb后缀名不是数据库文件必须把数据库文件改成.mdb

#4


这后缀名可以随便改,只要在url上写对就行了

#5


关于jdbc驱动直接连接access数据库的问题

#6


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;


public class test {

/**
 * @param args
 * @throws Exception 
 */
public static void main(String[] args) throws Exception {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
        String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+"D://ni.accdb";  
        Connection con = DriverManager.getConnection(url);  
        Statement st = con.createStatement();  
        String sql = "select * from basic";  
        ResultSet rs = st.executeQuery(sql);  
        while(rs.next())  
        { 
         System.out.println(rs.getString("name"));
        }
}

}

#7


正好有帮助! 关于jdbc驱动直接连接access数据库的问题

#8


虽不是完整的,但是很正确,两种方法都能成功。

#9


sun.jdbc.odbc.JdbcOdbcDriver 在jdk1.6里找不着

#10


能否帮我看看我按照你这样搞还是报错了。
ava.sql.SQLException: Users/bh/Work/tool/workspace/web_vmware/WebRoot/WEB-INF/classes/vmware.mdb doesn't exist or can't be accessed! If you're using mapped driver to access Windows, maybe it's a secuirty issue.
at com.hxtt.global.SQLState.SQLException(Unknown Source)
at com.hxtt.sql.bm.a(Unknown Source)
at com.hxtt.sql.access.r.<init>(Unknown Source)
at com.hxtt.sql.access.EmbeddedDriver.connect(Unknown Source)
at com.hxtt.global.SQLState.getConnection(Unknown Source)
at com.hxtt.sql.HxttDriver.if(Unknown Source)
at com.hxtt.sql.HxttDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at util.DBUtil.getConnection(DBUtil.java:164)
at util.DBUtil.main(DBUtil.java:77)
java.lang.NullPointerException
at util.DBUtil.main(DBUtil.java:79)

#11



Connection con=null;
Statement st=null;
ResultSet rs=null;
try
{
//注册驱动
Class.forName("com.hxtt.sql.access.AccessDriver");
System.out.println("驱动已加载");
out.println("驱动已加载");
}
catch(ClassNotFoundException e)
{
System.out.println("找不到驱动程序");
out.println("找不到驱动程序");
e.printStackTrace();
}
try
{
out.println("2");

con=DriverManager.getConnection("Jdbc:Access:///C:/K.mdb");
st=con.createStatement();
rs=st.executeQuery("select * from goodsInfo");
out.print("<table border=1>");
out.print("<tr>");
out.print("<th>编号</th>");
out.print("<th>支出项目</th>");
out.print("<th>费用</th>");
out.print("<th>类别</th>");
out.print("</tr>");
while(rs.next())
{
out.print("<tr>");
out.print("<td>"+rs.getString(1)+"</td>");
out.print("<td>"+rs.getString(2)+"</td>");
out.print("<td>"+rs.getString(3)+"</td>");
out.print("<td>"+rs.getString(4)+"</td>");
out.print("</tr>");
}
out.print("</table>");
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
try
{
if(rs!=null)rs.close();
if(st!=null)st.close();
if(con!=null)con.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}


为什么我的总是报错无法找到

#1


   try {
            Class.forName("com.hxtt.sql.access.AccessDriver").newInstance();
            String url = "jdbc:Access:///c:/a/db.mdb";
            conn = DriverManager.getConnection(url, "", "");
        } catch (Exception e) {
            e.printStackTrace();
        }

#2


引用 1 楼 bichir 的回复:
   try {
            Class.forName("com.hxtt.sql.access.AccessDriver").newInstance();
            String url = "jdbc:Access:///c:/a/db.mdb";
            conn = DriverManager.getConnection(url, "", "");
        } catch (Exception e) {
            e.printStackTrace();
        }


太谢谢了大哥! 一下就解决了,太专业了。你的方法我之前在百度上看到了,可是没弄明白和真理擦肩而过,幸好又遇到了你。
可是我还有一个问题,就是我用的是ACCESS 2013,不知道怎么的后缀名是.accdb就有错误,说.accdb后缀名不是数据库文件必须把数据库文件改成.mdb

#3


啥都知道了,还问个啥,自己琢磨呗。

引用 2 楼 u010387972 的回复:
Quote: 引用 1 楼 bichir 的回复:

   try {
            Class.forName("com.hxtt.sql.access.AccessDriver").newInstance();
            String url = "jdbc:Access:///c:/a/db.mdb";
            conn = DriverManager.getConnection(url, "", "");
        } catch (Exception e) {
            e.printStackTrace();
        }


太谢谢了大哥! 一下就解决了,太专业了。你的方法我之前在百度上看到了,可是没弄明白和真理擦肩而过,幸好又遇到了你。
可是我还有一个问题,就是我用的是ACCESS 2013,不知道怎么的后缀名是.accdb就有错误,说.accdb后缀名不是数据库文件必须把数据库文件改成.mdb

#4


这后缀名可以随便改,只要在url上写对就行了

#5


关于jdbc驱动直接连接access数据库的问题

#6


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;


public class test {

/**
 * @param args
 * @throws Exception 
 */
public static void main(String[] args) throws Exception {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
        String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+"D://ni.accdb";  
        Connection con = DriverManager.getConnection(url);  
        Statement st = con.createStatement();  
        String sql = "select * from basic";  
        ResultSet rs = st.executeQuery(sql);  
        while(rs.next())  
        { 
         System.out.println(rs.getString("name"));
        }
}

}

#7


正好有帮助! 关于jdbc驱动直接连接access数据库的问题

#8


虽不是完整的,但是很正确,两种方法都能成功。

#9


sun.jdbc.odbc.JdbcOdbcDriver 在jdk1.6里找不着

#10


能否帮我看看我按照你这样搞还是报错了。
ava.sql.SQLException: Users/bh/Work/tool/workspace/web_vmware/WebRoot/WEB-INF/classes/vmware.mdb doesn't exist or can't be accessed! If you're using mapped driver to access Windows, maybe it's a secuirty issue.
at com.hxtt.global.SQLState.SQLException(Unknown Source)
at com.hxtt.sql.bm.a(Unknown Source)
at com.hxtt.sql.access.r.<init>(Unknown Source)
at com.hxtt.sql.access.EmbeddedDriver.connect(Unknown Source)
at com.hxtt.global.SQLState.getConnection(Unknown Source)
at com.hxtt.sql.HxttDriver.if(Unknown Source)
at com.hxtt.sql.HxttDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at util.DBUtil.getConnection(DBUtil.java:164)
at util.DBUtil.main(DBUtil.java:77)
java.lang.NullPointerException
at util.DBUtil.main(DBUtil.java:79)

#11



Connection con=null;
Statement st=null;
ResultSet rs=null;
try
{
//注册驱动
Class.forName("com.hxtt.sql.access.AccessDriver");
System.out.println("驱动已加载");
out.println("驱动已加载");
}
catch(ClassNotFoundException e)
{
System.out.println("找不到驱动程序");
out.println("找不到驱动程序");
e.printStackTrace();
}
try
{
out.println("2");

con=DriverManager.getConnection("Jdbc:Access:///C:/K.mdb");
st=con.createStatement();
rs=st.executeQuery("select * from goodsInfo");
out.print("<table border=1>");
out.print("<tr>");
out.print("<th>编号</th>");
out.print("<th>支出项目</th>");
out.print("<th>费用</th>");
out.print("<th>类别</th>");
out.print("</tr>");
while(rs.next())
{
out.print("<tr>");
out.print("<td>"+rs.getString(1)+"</td>");
out.print("<td>"+rs.getString(2)+"</td>");
out.print("<td>"+rs.getString(3)+"</td>");
out.print("<td>"+rs.getString(4)+"</td>");
out.print("</tr>");
}
out.print("</table>");
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
try
{
if(rs!=null)rs.close();
if(st!=null)st.close();
if(con!=null)con.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}


为什么我的总是报错无法找到