Java JDBC-ODBC 与Access 的连接、Java直接连接access
步骤如下:
1.加载驱动
2.建立连接
3.创建SQL语句对象
4.SQL运行
5.关闭SQL对象,close连接!
与access的连接,主要是在第一步和第二部略有不同,而在第二步有两种方法来实现。而后面的sql语句只要遵循access的语法就行。
第一步加载驱动
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//这里只能通过jdbc-odbc的方式,通过jdbc去调用odbc,然后windows操作系统通过odbc去操作access数据库,
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
如果没有异常产生,说明数据库驱动加载成功,顺便说一下,这个驱动系统已经集成了,所以不用再去导入驱动包
第二步建立连接
Connectionconn=DriverManager.getConnection("jdbc:odbc:studentDatabase");
通过上面的代码,我就取得了这个数据库的连接,其中"jdbc:odbc:studentDatabase"这个字符串很重要,相信大家都知道studentDatabase这个是什么。就是你在windows系统上面建立的ODBC数据源的 用户DSN 或者 系统DSN ,这个DSN 就指向你的access数据库的位置。
这样的话,你的java程序就可以通过JDBC-ODBC来操作你的access数据库,但是这样有个缺点,就是:当我们把这台电脑做的java程序拿到其他电脑上时,我们还得为其他电脑上添加上 ODBC数据源,这样就很麻烦!
所以我们通过第二种方法来实现:
Connectionconn=DriverManager.getConnection("jdbc:odbc:driver={Microsoft AccessDriver (*.mdb)};DBQ=ccboy.mdb");
相信大家对“jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=ccboy.mdb”这个字符串也应该理解,其中ccboy.mdb就是我们的数据库名字,他的位置和我们程序的统计目录下。当然也可以写绝对路径;如下
Connectionconn=DriverManager.getConnection("jdbc:odbc:driver={Microsoft AccessDriver (*.mdb)};DBQ=D:\\Workspaces\\Test02\\ccboy.mdb");
这样的话我们就不用特意去给当前系统添加ODBC数据源,就方便了许多,换句话说我们把程序给了用户,用户只要安装完成后就可以使用了,而不用去关心什么是ODBC,还配置什么的。。。
// 检测数据库连接状况***********
DatabaseMetaDatadmd=conn.getMetaData();
System.out.println("连接的数据库:"+dmd.getURL());
System.out.println("驱动程序:"+dmd.getDriverName());
接下来我们就开始对数据的操作,如创建删除表、更新删除数据、查询记录等。
我这里给出一个在java控制台运行的系统设计:
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class Access {
/**
* @author CCBOY
* @param args
*/
public static void main(String[] args) {
String DateBase ="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=ccboy.mdb";//也可以使用绝对路径
//String DateBase = "jdbc:odbc:studentDatabase";//这个需要建立ODBC数据源
Statement sql = null;
ResultSet rs = null;
String tableName = null;
String tmp = null;
int num = 0;
try {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException e) {
System.out.println("Can not load Jdbc-Odbc BridgeDriver");
System.err.print("ClassNotFoundException:");
System.err.println(e.getMessage());
}
//****************************
// JDBC连接操作结束
//****************************
Scanner reader =new Scanner(System.in);
Connection con =DriverManager.getConnection(DateBase, "", "");
// 检测数据库连接状况***********
DatabaseMetaDatadmd=con.getMetaData();
System.out.println("连接的数据库:"+dmd.getURL());
System.out.println("驱动程序:"+dmd.getDriverName());
sql =con.createStatement();
System.out.print("输入表名:");
tableName =reader.nextLine();
sql
.executeUpdate("create table "
+ tableName
+ " (id char(3) primary key,namechar(8),age integer,sex char(4),Tel char(20))");
System.out.println("创建" +tableName + "表成功!");
System.out.print("载入初始数据中...");
sql.executeUpdate("insertinto " + tableName
+ " values('001','陈晨',20,'男','15235412541')");
sql.executeUpdate("insertinto " + tableName
+ " values('002','王朗',21,'男','13726781254')");
sql.executeUpdate("insertinto " + tableName
+ " values('003','貂禅',22,'女','12926596069')");
sql.executeUpdate("insertinto " + tableName
+ " values('004','西施',23,'女','15566249660')");
sql.executeUpdate("insertinto " + tableName
+ " values('005','CCBOY',21,'男','15123342110')");
sql.executeUpdate("insertinto " + tableName
+ " values('006','韩寒',25,'男','13626512462')");
System.out.println("...载入完毕!");
System.out.println("****************************");
System.out.println("**1.显示表单数据 **");
System.out.println("**2.插入数据 **");
System.out.println("**3.修改数据 **");
System.out.println("**4.删除数据 **");
System.out.println("**5.退出系统 **");
System.out.println("**********FYMODE***********");
for (; num <= 5;)
{
System.out.print("请选择.....功能:");
num =Integer.parseInt(reader.nextLine());
switch (num) {
case 1:
rs =sql.executeQuery("select * from " + tableName);// 执行查询
System.out.println("显示初始数据:");
System.out.println("ID 用户名 年龄 性别 电话 ");
while(rs.next())
{
tmp =rs.getString(1) + " " + rs.getString(2) + " "
+rs.getInt(3) + " " + rs.getString(4) +" "
+ rs.getString(5);
System.out.println(tmp);
}
break;
case 2:
System.out.print("输入ID:");
String s1 =reader.nextLine();
System.out.print("输入用户名:");
String s2 =reader.nextLine();
System.out.print("输入年龄:");
int s3 =Integer.parseInt(reader.nextLine());
System.out.print("输入性别:");
String s4 =reader.nextLine();
System.out.print("输入电话:");
String s5 =reader.nextLine();
sql.executeUpdate("insertinto " + tableName + " values('"
+ s1 + "','" + s2 +"'," + s3 + ",'" + s4 + "','"
+ s5 + "')");
break;
case 3:
System.out.print("请输入欲修改的ID:");
String pro =reader.nextLine();
System.out.print("输入新的用户名:");
s2 =reader.nextLine();
System.out.print("输入新的年龄:");
s3 =Integer.parseInt(reader.nextLine());
System.out.print("输入新的性别:");
s4 =reader.nextLine();
System.out.print("输入新的电话:");
s5 =reader.nextLine();
sql.executeUpdate("update" + tableName + " set name='"
+ s2 + "',age='" + s3 +"',sex='" + s4 + "',Tel='"
+ s5 + "' where id='" + pro+ "'");
break;
case 4:
System.out.print("请输入欲删除的ID:");
pro =reader.nextLine();
sql.executeUpdate("deletefrom " + tableName
+ " where id='" + pro +"'");
break;
case 5:
System.out.println("欢迎使用!SeeYou");
num = 1000;
break;
}
}
sql.close();
con.close();
} catch (SQLException ex) {
System.out.println("SQLException:");
while (ex != null) {
System.out.println("Message:"+ ex.getMessage());
ex =ex.getNextException();
}
} catch (Exception e) {
System.out.println("IOException");
}
}
}
使用上述代码时:需要建立一个ccboy.mdb 数据库放到项目的根目录,或者你指定的路径下。
SQL
1、软件安装和帐户设定
1-1、安装“MS Sql Server2005(SP2)” (内置帐户选择本地账户,登陆模式选Windows与SQL混合模式,密码可任设;如果没有设置内置帐户sa的话,请直接使用WinNT登录“SQL Server Management Studio”,选择安全性 → 登录名 → sa → 登录属性,然后设置密码,关闭“SQL Server Management Studio”)
1-2、安装“MyEclipse 6.6.1GA”(或其它版本)
1-3、下载连接驱动包“sqljdbc.jar”
2、设置SQL Server服务器:
2-1、“开始” → “程序” →“Microsoft SQL Server 2005” → “配置工具” → “SQL Server Configuration Manager”(确认“SQL ServerManagement Studio”已关闭)
2-2、“SQL Server 2005 服务”中停止服务“SQLServer (SQLEXPRESS)”(默认是启动状态)
2-3、“SQL Server 2005 网络配置” → “MSSQLSERVER的协议”,启动“TCP/IP”(默认是禁用状态),然后双击“TCP/IP”进入属性设置,在“IP 地址”里,确认“IPAll”中的“TCP 端口”为1433
2-4、“SQL Server 2005 服务”中启动服务“SQLServer (MSSQLSERVER )”(默认是停止状态)
2-5、关闭“SQL ServerConfiguration Manager”(此时可以启动“SQL Server Management Studio”,并用帐户sa、密码登录,SQLServer服务器设置正确的话应该能登录成功)
3、创建测试数据库和表:
启动“SQL Server Management Studio”,并用帐户sa、密码登录(SQLServer服务器设置正确的话应该能登录成功),创建一个数据库JSPTest,内建一个表register
4、创建测试的Java工程和代码
4-1、启动“MyEclipse” →“File” → “New” → “Project” → “Java Project”,命名为Test
4-2、打开Test的“Properties”→ “Java Build Path” → “Libraries” → “Add External JARs” ,选择下载好的连接驱动包“sqljdbc.jar”,然后点击“OK”确定
4-3、创建一个测试类,编写如下代码:
import java.sql.*;
public class Test
{public static void main(String[] args)
{ Connection con=null;
Statement stmt=null;
ResultSet rs=null;
try {Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=test","adm","123");
//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// con = DriverManager.getConnection("jdbc:odbc:JDBCSQLDemo_JSPTest");
stmt = con.createStatement();
rs = stmt.executeQuery("select * fromregist");
while(rs.next())
{ String strUserName =rs.getString(1);
System.out.println(strUserName);
}
if(rs!=null) rs.close();
if(stmt!=null) stmt.close();
if(con!=null) con.close();
}
catch (Exception e)
{ e.printStackTrace(); }
finally
{ System.out.println("演示完毕!");}
}}
4-4、执行代码,应该显示register表的数据
4-5、代码中注释的部分为ODBC桥连接代码,可以选用
4-6、如果你以前用JDBC连接SQL Server2000的话就要注意了:在SQL Server 2000 中加载驱动和URL路径的语句是
“com.microsoft.jdbc.sqlserver.SQLServerDriver”
“jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=JSPTest”
而SQL Server 2005 中加载驱动和URL的语句则为
“com.microsoft.sqlserver.jdbc.SQLServerDriver”
“jdbc:sqlserver://localhost:1433;DatabaseName=JSPTest”
注意两者的差异