本代码实现连接 本机数据库的方法。
操作步骤:
1、进入控制面板,打开“管理工具→数据源(ODBC)”,弹出“ODBC数据源管理器”,在“用户DSN”选项卡中,单击选中名称为“Visio Database Sample”,驱动程序为“Microsoft Access Driver(*.mdb,*.accdb)”的选项(注意:*.mdb 是ACCESS 2003的数据库扩展名,*.accdb是access 2007及以上的扩展名,如果看不到该选项,请确认已经安装access软件),然后单击 “添加”按钮,弹出“创建新数据源”对话框,选择“Microsoft Access Driver(*.mdb,*.accdb)”(对access 2003 和 access2007均适用),单击“完成”按钮,弹出 "ODBC Microsoft Access 安装" 对话框,在 数据源名 中输入 你的access 数据库名称,比如 “book”,然后单击 “选择”按钮,在弹出的 对话框中找到 你电脑上的数据库文件(如我的 “book”数据库文件),最后单击确定按钮,返回相应的对话框,然后选择 “确定” “完成”,最后回到 “ODBC数据源管理器”可以看到 用户数据源中出现了“book”数据源,
2、连接数据库的关键语句:
加载驱动程序:
String sDriver="sun.jdbc.odbc.JdbcOdbcDriver";
Class.forName(sDriver);
连接数据库:
Connection dbCon=null;
String sCon="jdbc:odbc:book"; //book 就是数据库名称
dbCon=DriverManager.getConnection(sCon);
执行数据库操作:
Statement stmt=stmt=dbCon.createStatement();
String sSQL="SELECT * "+" FROM bookindex";
ResultSet rs=stmt.executeQuery(sSQL);
while(rs.next()){
int num;
System.out.print(rs.getString("BookID")+" "); //输出对应字段的值
System.out.print(rs.getString("BookTitle")+" ");
System.out.print(rs.getString("BookAuthor"));
System.out.println(" " +rs.getFloat("BookPrice"));
}
关闭数据库连接
stmt.close();
dbCon.close();
实例代码如下(有 book数据库,表bookindex,字段有 :BookID、BookTitle、BookAuthor、BookPrice)
import java.sql.*;
public class DBconnTest {
public static void main(String args[]) {
//步骤1:加载驱动程序
String sDriver="sun.jdbc.odbc.JdbcOdbcDriver";
try{
Class.forName(sDriver);
}
catch(Exception e){
System.out.println("无法加载驱动程序");
return;
}
System.out.println("步骤1:加载驱动程序——成功!");
Connection dbCon=null;
Statement stmt=null;
String sCon="jdbc:odbc:book";
try{
dbCon=DriverManager.getConnection(sCon);
if(dbCon!=null){
System.out.println("步骤2:连接数据库——成功!");
}
//步骤3:建立JDBC的Statement对象
stmt=dbCon.createStatement();
if(stmt!=null){
System.out.println("步骤3:建立JDBC的Statement对象——成功!");
}
}
catch(SQLException e){
System.out.println("连接错误:"+sCon);
System.out.println(e.getMessage());
if(dbCon!=null){
try{
dbCon.close();
}
catch(SQLException e2){}
}
return;
}
try{//执行数据库查询,返回结果
String sSQL="SELECT * "+" FROM bookindex";
ResultSet rs=stmt.executeQuery(sSQL);
while(rs.next()){
System.out.print(rs.getString("BookID")+" ");
System.out.print(rs.getString("BookTitle")+" ");
System.out.print(rs.getString("BookAuthor"));
System.out.println(" " +rs.getFloat("BookPrice"));
}
}
catch(SQLException e){
System.out.println(e.getMessage());
}
finally{
try{
//关闭步骤3所开启的statement对象
stmt.close();
System.out.println("关闭statement对象");
}
catch(SQLException e){}
try{
//关闭数据库连接
dbCon.close();
System.out.println("关闭数据库连接对象");
}
catch(SQLException e){}
}
}
}
上面的方法问题:只对本机有效,换个电脑就找不到数据源了,需要重新配置 access数据源
在连接数据库时,可以直接指定数据库 的路径,最好将数据库和源文件放到一个目录里,这样就不用再配置数据源了。方法如下:
将指定数据源语句代码更改为如下:
原先代码:
String sCon="jdbc:odbc:book";
更改后代码:(注意,这里将数据库与程序源文件放到同一目录下,如果用 eclipse 则是放到 项目文件夹中,与.classpath 同级。
String sCon = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=book.mdb";
也可以在eclipse 中建立个文件夹 比如 DB 文件夹,则语句还要加上目录如下:
String sCon = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=DB/book.mdb";
实例如下:
import java.sql.*;
public class DBconnTest {
public static void main(String args[]) {
//步骤1:加载驱动程序
String sDriver="sun.jdbc.odbc.JdbcOdbcDriver";
try{
Class.forName(sDriver);
}
catch(Exception e){
System.out.println("无法加载驱动程序");
return;
}
System.out.println("步骤1:加载驱动程序——成功!");
Connection dbCon=null;
Statement stmt=null;
String sCon = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=book.mdb";
try{
dbCon=DriverManager.getConnection(sCon);
if(dbCon!=null){
System.out.println("步骤2:连接数据库——成功!");
}
//步骤3:建立JDBC的Statement对象
stmt=dbCon.createStatement();
if(stmt!=null){
System.out.println("步骤3:建立JDBC的Statement对象——成功!");
}
}
catch(SQLException e){
System.out.println("连接错误:"+sCon);
System.out.println(e.getMessage());
if(dbCon!=null){
try{
dbCon.close();
}
catch(SQLException e2){}
}
return;
}
try{//执行数据库查询,返回结果
String sSQL="SELECT * "+" FROM bookindex";
ResultSet rs=stmt.executeQuery(sSQL);
while(rs.next()){
System.out.print(rs.getString("BookID")+" ");
System.out.print(rs.getString("BookTitle")+" ");
System.out.print(rs.getString("BookAuthor"));
System.out.println(" " +rs.getFloat("BookPrice"));
}
}
catch(SQLException e){
System.out.println(e.getMessage());
}
finally{
try{
//关闭步骤3所开启的statement对象
stmt.close();
System.out.println("关闭statement对象");
}
catch(SQLException e){}
try{
//关闭步骤3所开启的statement对象
dbCon.close();
System.out.println("关闭数据库连接对象");
}
catch(SQLException e){}
}
}
}