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”
注意两者的差异