Java通过JDBC、ODBC接口访问数据库
1 JDBC、ODBC接口
Java应用程序通过JDBC
API(java.sql)与数据库连接,而实际动作则是由JDBC驱动程序管理器(JDBC Driver
Manager)通过JDBC驱动程序与数据库系统进行连接。ODBC(Open DataBase
Connectivity)即开放式接口,它为用户提供了一个访问关系数据库标准接口,对于不同数据库它提供了一套统一API;可以使应用程序通过API访问任何提供了ODBC驱动程序数据库,而目前所有关系数据库都提供了ODBC驱动程序,所以ODBC已经成为数据库访问业界标准,并得到了广泛应用。
JDBC-ODBC桥是一种JDBC驱动程序,它通过将JDBC操作转换为ODBC操作来实现。利用JDBC-ODBC桥可以使程序开发人员不需要学习更多知识就可以编写JDBC应用程序,并能够充分利用现有ODBC数据源。JDBC-ODBC桥驱动程序可以使JDBC能够访问几乎所有类型数据库。
2 利用Java应用程序访问SQL Server2000数据库
(1)建立数据库
启动“Microsoft SQL
Server2000”,打开“企业管理器”在“数据库”中建立名为“test”数据库,并在其下制作名为“student”数据表,如图1所示。
(2)建立(ODBC)数据源和驱动程序 字串4
在控制面板上通过“管理工具”“数据源(ODBC)”打开“ODBC数据源管理器”对话框,单击“系统DSN”选项卡,然后单击“添加”按钮,得到“创建数据源”对话框,选择“SQL
Server”并单击“完成”按钮,在出现“建立新数据源到SQL
Server”对话框中“数据源名称”项填写“stu”并选取“服务器名”,然后单击“下一步”按钮,选择“使用网络登录IDWindows
NT验证”项目,单击“下一步”按钮,把默认数据库改为“test”,再单击“下一步”,单击“完成”按钮,然后可以单击“测试数据源”,成功后,单击“确定”按钮,完成了(ODBC)数据源和驱动程序建立。
3.编写代码
import java.sql.*;
public class JdbcTest{
public static void main(String []
args){
String url="jdbc:odbc:stu";
Connection con;
String sql;
Statement stmt;
String num,name,sex;
int age,math,eng,spec;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(java.lang.ClassNotFoundException
e){
System.err.print("ClassNotfoundException: ");
System.out.println(e.getMessage());
}
try{
con=DriverManager.getConnection(url,"java","java");
stmt=con.createStatement();
//向student表中插入一行记录
sql="insert into student
values('200108','赵小龙','男',20,71,62,76)";
stmt.executeUpdate(sql);
//检索student 中的所有记录并获取数据输出
sql="SELECT * from student";
ResultSet
rs=stmt.executeQuery(sql);
System.out.println("学号 姓名 性别 年龄 高等数学 英语
专业课");
while(rs.next()){
num=rs.getString(1);
name=rs.getString(2);
sex=rs.getString(3);
age=rs.getInt(4);
math=rs.getInt(5);
eng=rs.getInt("英语");
spec=rs.getInt("专业课");
System.out.println(num+" "+name+"
"+sex+" "+age+" "+math+" "+eng+" "+spec);
}
//检索高等数学成绩80分以上的学生信息
rs=stmt.executeQuery("select
学号,姓名,高等数学,英语,专业课 from student where 高等数学>=80");
System.out.println();
System.out.println("The students whose
math mark is beyond 80 are: ");
while(rs.next()){
num=rs.getString(1);
name=rs.getString(2);
math=rs.getInt(3);
eng=rs.getInt("英语");
spec=rs.getInt("专业课");
System.out.println("学号="+num+"
"+"姓名="+name+" "+"高等数学="+math+" "+"英语="+eng+" "+"专业课="+spec);
}
stmt.close();
con.close();
}catch(SQLException ex){
System.out.println("SQLException:
"+ex.getMessage());
}
}
}
4 运行程序
首先编绎:javac JdbcTest.java
编译成功后,执行:java Jdbc