1.JDBC是Java DataBase Connectivity的缩写。它是Sun的Javasoft公司制定的Java数据库连接技术,是一套标准接口。
2.在Java.sql包中提供了JDBC API,开发人员可以通过它连接到各种数据库系统,编写访问数据库的程序。
3.JDBC API不能直接访问数据库,它依赖于数据库厂商提供的JDBC Driver(JDBC驱动程序)。
4.使用Java和JDBC开发的程序可以跨数据库平台运行,受数据库限制很少。
1.应用程序-- ---开发人员编写的客户端程序。
在应用程序中调用JDBC API,将SQL语句发送到数据库并检索结果。
2.驱动程序管理器 -----JDBC将驱动程序管理器负责使用正确的JDBC驱动程序和连接信息访问数据库,在Java应用程序和数据库系统之间建立连接。
3.驱动程序-----驱动程序由数据库厂商提供,实现数据库驱动接口,能够把SQL指令正确的发送的数据库服务器。
①Driver接口和DriverManager类
②Connection
③Statement或者PreparedStatement
④ResultSet
1.所有的JDBC驱动程序都必须实现Driver接口,JDBC驱动程序由数据库厂商提供,所以必须把JDBC驱动程序加入到项目中。
2.DriverManager用来建立和数据库的连接以及管理JDBC驱动程序。
1.Connection代表Java程序和数据库的连接。在连接上下文中执行 SQL 语句并返回结果 。
2.Connection的常用方法如下:
①createStatement()创建并返回Statement对象;
②preparedStatement(String sql)创建并返回PreparedStatement对象。
1.Statement接口定义了一组数据库操作的方法,可以通过此接口的实现类对象执行SQL命令。
2.Statement 对象的方法:
①executeUpdate() 用来创建和更新表 stmt.executeUpdate(query);
②executeQuery() 对于select语句,返回ResultSet ResultSet rs = stmt.executeQuery(query);
③execute() 返回布尔值,用于执行任何 SQL 语句 stmt.execute();
1.PreparedStatement表示预编译的 SQL 语句的对象,是Statement的子接口,扩展了Statement的功能。
2.PreparedStatement接口使我们可以使用占位符(?)作为参数定义一条SQL语句。
3.占位符是在SQL语句中出现的标记符,在SQL语句执行之前会被替换成实际的值。
4.通过调用connection.preparedStatement()方法来生成PreparedStatement对象。
5.设置查询参数
1.ResultSet表示select语句查询得到的结果集。
2.ResultSet中记录的行号从1开始,一个Statement对象在同一时刻只能打开一个ResultSet对象。
3.调用ResultSet的next()方法,可以使游标定位到下一条记录。
4.调用ResultSet的getXXX()方法,可以取得某个字段的值。
从一个JDBC数据源检索数据的时候,ResultSet实现了把SQL数据类型映射到Java数据类型上。
1.装载并注册数据库的JDBC驱动程序:
Class.forName( "oracle.jdbc.driver.OracleDriver");
2.建立与数据库的连接:
Connection conn = DriverManager.getConnection(url,user,pwd);
3.创建Statement对象,准备调用sql语句或创建PreparedStatement对象。
Statement stm=conn.createStatement();
PreparedStatement pstm = conn.preparedStatement(sql);
4.执行SQL语句,获取结果集(select操作)。
Statement对象:ResultSet rs=stm.executeQuery(sql);
PreparedStatement对象:ResultSet rs=pstm.executeQuery();
5.访问ResultSet中的记录集。
while(rs.next()) { String col1=rs.getString(1); String col2=rs.getString(2); int col3=rs.getInt(3); … }
6.依次关闭ResultSet、Statement/PrearedStatement和Connection对象。