JDBC第一课-简介及开发第一个JDBC程序
简介:
jdbc: java语言操作数据库的技术.[实际是操作某些对象的方法]
JDBC: 一套Java访问数据库的接口,通用访问接口,可以访问任何关系型数据库(Oracle MySQL DB2 ...)
常用API讲解
常见接口:
java.sql.Connection
: 数据库连接,只有获得connection对象,才连接上数据库.
java.sql.PreparedStatement
: 发送sql语句的工具, 具备发送sql的功能(方法)
java.sql.ResultSet
: 结果集: 接收数据库执行查询sql返回的查询结果.
java.sql.Driver
: 驱动类: 访问数据库的不同方式, 不同的数据库会自动提供具体的接口实现类.
java.sql.DriverManager
: 管理多个驱动.
核心编程思想
假如有一个需求: 向 t_person 表添加一条数据?
先创建好t_person表:
create table t_person( id number(10) primary key, name varchar2(50), sex number(1), age number(3), mobile varchar2(11), address varchar2(200) );
JDBC访问数据库的步骤
-
数据库客户端访问数据库的步骤
① 连接数据库 用户名 密码
② 打开发送sql语句的工具(窗口)
③ 准备sql语句, 发送sql语句.
④ 如果发送的查询select语句, 接收数据库的查询结果.
⑤ 释放数据库资源: 接收查询结果 发送sql工具关闭 数据连接断开.【原则:后打开的先关闭】
-
JDBC访问数据库的步骤【重点】
① 连接数据库 [获得数据库连接 Connection], 用户名 密码
② 创建sql发送的工具 [PreparedStatement]
③ 准备sql语句, 执行发送.PreparedStatement中executeXxxx()方法
④ 如果发送的查询select语句,接收查询结果 [ResultSet]
⑤ 释放资源: ResultSet PreparedStatement Connection
了解步骤之后,我们来开发第一个JDBC案例【java代码实现】
还是那个需求需求: 向 t_person表添加一条数据?
insert into t_person values(100,'张三',1,18,'15533334898','河南郑州');
思路图如下:
JDBC操作步骤:正式开始之前,先把Oracle的驱动jar包导入项目中。
ojdbc?.jar: 存放是oracle提供的jdbc接口的实现类和功能代码. 版本: ojdbc5(jdk5) ojdbc6(jdk6) ojdbc14(jdk1.4) 操作: ① 将jar拷贝在项目中. 项目--右键--new--folder--命令 lib, 将jar拷贝在当前目录. ② 将jar导入classpath中, jar--右键---buildpath--add to buildpath
下面是开发步骤【重点】
// 1. 加载驱动 Class.forName("oracle.jdbc.OracleDriver"); // 2. 获得数据库连接 connection /* DriverManager.getConnection("url","user","password"); * url: jdbc远程访问oracle的路径. 固定: jdbc:oracle:thin:@数据库的ip地址:1521:xe[企业版把xe换成orcl] */ Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "hr", "hr"); // 3. 创建发送sql的工具 PreparedStatement // conn.prepareStatement("sql语句"); String sql = "insert into t_person values(101,'张三',1,20,'12345678911','河南郑州')";// sql结尾不能有分号. PreparedStatement pstm = conn.prepareStatement(sql); // 4. 准备sql,发送sql // executeUpdate(): 用来发送增删改sql语句, 返回值int代表数据库影响的数据行数. pstm.executeUpdate(); // 5. 如果是查询,接收查询结果,并处理.【下面会有专门处理结果集的代码演示】 // 6. 释放资源. ResultSet PreparedStatement Connection 先打开的后关闭. if (pstm != null) pstm.close(); if (conn != null) conn.close();
ResultSet结果集
需求: 查询id为100的person信息?
select id,name,sex,age,mobile,address from t_person where id = 100;
ResultSet
结果集, 存放查询结果.[存放查询语句执行后的结果,列名显示的select指定列名,未必是表的列名]
发送查询语句:
//发送查询的sql,将Oracle返回的查询结果,封装在ResultSet对象中返回,. PreparedStatement executeQuery();//发送查询语句,返回值就是ResultSet.
方法:
-
next() 移动resultSet的游标,下移一位, 并且通过返回值确定当前行是否有数据.
-
getXxxx("查询结果列名")---获得rs游标指向的当前行, 列名对应的数据.
-
getXxxx(列序号)---获得rs游标指向的当前行,列序号对应的数据。
//1.加载驱动 Class.forName("oracle.jdbc.OracleDriver"); //2.获得数据库连接 --Connection Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","hr","hr"); //3.准备发送SQL的工具--PreparedStatement String sql = "select id,name,sex,mobile from t_person"; PreparedStatement pstm = conn.prepareStatement(sql); //4.发送SQL--executeQuery() ResultSet rs = pstm.executeQuery(); //5.处理结果集--ResultSet while(rs.next()){ int id = rs.getInt("id"); String name = rs.getString("name"); int sex = rs.getInt(3); String mobile = rs.getString(4); System.out.println("[id:"+id+",name:"+name+",sex:"+sex+",mobile:"+mobile+"]"); } //6.关闭资源 if(rs != null) rs.close(); if(pstm != null) pstm.close(); if(conn != null) conn.close()
最后是一些JDBC方法整理:
DriverManager: //管理驱动 Class.forName("oracle.jdbc.OracleDriver") //管理驱动 getConnection(url,user,password); //获得Connection对象[url user password] Connection: 代表数据库连接. prepareStatement(sql语句) //创建发送sql的工具 close() //关闭conn资源 PreparedStatement 发送sql的工具 executeUpdate() //发送sql语句,返回值int,数据库影响数据条数. ResultSet ? next() 移动resultSet的游标,下移一位, 并且通过返回值确定当前行是否有数据. getXxxx("查询结果列名")---获得rs游标指向的当前行, 列名对应的数据. getXxxx(列序号)---获得rs游标指向的当前行,列序号对应的数据.
-