JDBC以及相关技术学习(一)----第一个JDBC程序

来源:互联网 发布:网络消费者权益保护 编辑:程序博客网 时间:2024/05/16 18:31

JDBC是什么?JDBC是JAVA连接数据库的一系列接口,存放在java.sql包中,注意,它仅仅是接口没有任何实现,具体的代码实现是有数据库厂商实现的,我们使用JDBC连接数据库时,无需要关心具体连接是什么数据库,只需要把数据库厂商提供的包引入,然后直接调用JDBC接口就可以对数据库进行操作。


先来看一个简单的需求:使用JDBC在SQL SERVER上执行SQL select * from UserInfo,并在界面显示所有记录的用户名称。先来个简单的例子实现这个需求。

(1)先把相关的包引入,SQL SERVER需要引入包:mssqlserver.jar、msutil.jar、msbase.jar

(2)写一段简单的代码实现

  Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

String url = "jdbc:sqlserver://localhost:1433;DatabaseName=JDBCTEST";
Connection conn = DriverManager.getConnection(url,"sa","newsoft@1305");
Statement statement = conn.createStatement();
String sql = "select * from UserInfo";
ResultSet resultSet = statement.executeQuery(sql);
while(resultSet.next()){
System.out.println(resultSet.getString("name"));
}
resultSet.close();
statement.close();
conn.close();

代码分析:

这段代码,包括了JDBC操作的6个步骤:

(1)注册驱动 (2)建立连接 (3)创建执行SQL的语句 (4)执行语句(5)处理执行结果(6)释放资源

注册驱动:

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

这一句主要是注册驱动,也就是告诉虚拟机,调用JDBC接口时,执行哪些驱动包。

Class.forName 这个方法,主要是将某个类装载入虚拟机,而我们知道,当一个类装载进入虚拟机时,会执行其静态代码块,而这个类,就在静态代码块中做了一些初始化的工作,我们只要调用Class.forName就可以完成对驱动的注册。

实际上,如果要注册驱动,还可以使用

DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());完成注册,或者使用 

System.setProperty(“jdbc.drivers”,”com.microsoft.jdbc.sqlserver.SQLServerDriver()”);实际上,无论使用哪一种方法进行注册,效果都是一样的,但一般不使用new某个对象的方式,因为这样就与具体某个数据库耦合了,以后要更换数据库还必须修改代码。我们一般常用Class.forName的方法对驱动进行注册。

建立连接:

 Connection conn = DriverManager.getConnection(url,"sa","password");

这句没有什么说的,就是生成一个连接对象,实际上,JDBC的操作中,建立连接是最耗资源的。注意其三个参数,为连接的URL、数据库用户名、数据库密码。

URL的格式为: String url = "jdbc:sqlserver://localhost:1433;DatabaseName=JDBCTEST";,即:URL 协议+名称+子名称+主机:端口号

建立连接就好像在应用程序以及数据库之间架上一座桥。

创建执行SQL语句:

 Statement statement = conn.createStatement();
 String sql = "select * from UserInfo";

statement 就好像在桥上跑的车辆,把SQL语句运送到数据库执行。


执行语句:

 ResultSet resultSet = statement.executeQuery(sql);//这个没有什么说的,就是执行语句,并把语句返回并放到ResultSet对象中。


处理执行结果:

while(resultSet.next()){
 System.out.println(resultSet.getString("name"));
 }

即遍历resultSet的内容,resultSet可以当成是一个表,resultSet.next是把指针指到表的下一行(默认在第0行),result.getString()则是获取某一列的内容。


释放资源:

 resultSet.close();
 statement.close();
 conn.close();

处理完了,必须要把资源释放掉,否自如果没有释放,资源占用太多程序就崩溃了。这就好比执行SQL语句结束,必须把桥拆了,把车撤了,把处理结果装载器也废了。

当然,我了确保资源一定释放,必须对程序加上try   catch finally,并把释放资源的代码写在finally中,确保释放资源的代码执行。


总结一下:Connection、Statement 、ResultSet都是JDBC中常用的类,必须将其作用以及相关方法,弄熟悉。再看看Connection就是在程序与数据库架上桥,Statement就是运载SQL到数据库的车,ResultSet就是运载执行结果的车.