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就是运载执行结果的车.
- JDBC以及相关技术学习(一)----第一个JDBC程序
- 第一个JDBC程序
- 第一个jdbc程序
- JDBC以及相关技术学习(八)----JDBC元数据
- 实现第一个JDBC程序
- JDBC以及相关技术学习(五)----PreparedStatement特殊参数处理
- JDBC以及相关技术学习(六)----批量SQL处理
- JDBC以及相关技术学习(二)----把JDBC获取连接封装成一个工具类
- JDBC技术学习笔记(一)
- JDBC之第一个较为规范的JDBC程序
- 第一个jdbc例子
- 第一个JDBC任务
- JDBC以及相关技术学习(三)----运载查询结果的利器ResultSet
- JDBC以及相关技术学习(四)----运载SQL进行查询交通工具Statement
- JDBC以及相关技术学习(七)----事务机制与保存点
- JDBC以及相关技术学习(九)----简单的连接池实现
- JDBC以及相关技术学习(十)----拦截Connection的close方法
- JDBC相关知识(一)
- gtest source code
- XML第一天
- ORA-01261经典解决方法
- 数据量极大时用什么排序方法比较好
- Java JDK版本说明
- JDBC以及相关技术学习(一)----第一个JDBC程序
- linux系统下proc文件的含义
- 一步一步教你搭建win7下的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
- 基于指定数组大小的切割字符串(java字符串分割性能比较)
- uva10716 - Evil Straw Warts Live(转换成回文数)
- 《硅谷禁书》 pdf
- MMU的通俗理解
- android中listview卡顿的终极原因解析
- Linux 文件系统