Java连接Access数据库

来源:互联网 发布:汉宁窗 c语言 编辑:程序博客网 时间:2024/05/19 11:45
  • JDK1.7以下连接AccessODBC连接方式
    • 使用的工具
      • java JDK 1.7;
      • Access 2013;
      • ODBC数据源;
    • 数据库结构
      • 建立数据库shop,在其中添加表goods,表结构如下:

  • 数据如下:

  • 建立ODBC数据源:控制面板-->管理工具-->数据源(odbc)

  

  

  

  • 具体代码:目前环境是JDK1.8,下列代码没有测试

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

import java.util.Date;

public classExample11_1 {

public static voidmain(Stringargs[]) throws Exception {

Connectioncon = null;

Statementsql;

ResultSetrs;

 

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

//ODBC连接数据源的方式

con= DriverManager.getConnection("jdbc:odbc:myData","","");

//java代码直接连接access文件

// con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=shop.mdb","","");

 

sql= con.createStatement();

rs= sql.executeQuery("SELECT * FROM goods WHERE price>0");

while(rs.next()) {

Stringnumber = rs.getString(1);

Stringname = rs.getString(2);

Datedate = rs.getDate("madTime");

doubleprice = rs.getDouble("price");

System.out.printf("%-4s",number);

System.out.printf("%-6s",name);

System.out.printf("%-15s",date.toString());

System.out.printf("%6s\n",price);

}

con.close();

}

}

  • 在java代码中建立Jdbc-Odbc桥接器,代码是:
    • Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  • 连接数据库,这里要用到java.sql包中的Connection类声明一个对象,再用类DriverManager调用它的静态方法getConnection创建这个连接。
    • Connection con=DriverManager.getConnection("jdbc:odbc:数据源名字","数据源用户名","数据源密码");
  • JDK1.8连接Access
    • 说明:JDK1.8不再包含access桥接驱动,所以要手动引入Access驱动包
    • 引入了jar包后,相关的调用类也发生了变化,改变如下:黄色高亮为改变部分;

package hey.up;

  

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

  

public classJDBCAccess {

public static voidmain(String[]args) {

// url表示需要连接的数据源的位置,此时使用的是JDBC-ODBC桥的连接方式,url是"jdbc:odbc:数据源名"

Stringurl = "jdbc:Access:///d:/a1.mdb";

try{

Class.forName("com.hxtt.sql.access.AccessDriver");

Connectionconn = DriverManager.getConnection(url);

Statementstat = conn.createStatement();

Stringsql = "select * from goods";

ResultSetrs = stat.executeQuery(sql);

while(rs.next()){

System.out.println(rs.getString(2));

}

}catch (ClassNotFoundException| SQLExceptione) {

//TODO Auto-generated catch block

e.printStackTrace();

}

}

}

  • 效果
  • 注意:网上还有一种将Access_JDBC30.jar放入JDK中的lib文件下,利用classpath系统变量来引用,这样就省去了将jar包引入项目的步骤。但此方式我没有测试通过,所以只是简单记录下来操作步骤;
    • 把Access_JDBC30.jar放到JDK的lib里;
    • 添加了以后,修改CLASSPATH,环境变量的值需要加上这个jar包,路径为驱动包的绝对路径,例如C:\ProgramFiles\Java\jre1.8.0_65\lib\Access_JDBC30.jar,添加完后,需要重启电脑。[如果CLASSPATH中已有值,在最后添加就行,不同值之间添加分号;]一定要重启电脑!