#使用 JDBC 操作数据库 #1、JDBC 基础 #JDBC 简介:JDBC(Java Database Connectivity)是一种可以执行 SQL 的
Java API,通过它可以用一种 API 操作不同的数据库. #JDBC 驱动:不同数据库间,标准的 SQL 语句可以移植,而数据库实际
通信协议及某些数据库特征不 可移植,因此,JDBC 和数据库之间须还有一层,用于将 JDBC 调用映射成特定的数据库调用,此特殊层就是 驱动程序. JDBC 驱动程序. 直接与数据库实例交互,智能型的,知道数据库使用的底层协议 底层协议, 》纯 java 的,直接与数据库实例交互,智能型的,知道数据库使用的底层协议,是目前最流行的 JDBC 驱 动 #JDBC 常用接口和类简介 DriverManager:用于管理 JDBC 驱动的服务类,主要方法是获得 Connection 对象 public static synchronized Connection getConnection(String url,String user,String pass) throws SQLException Connection:代表一个数据库连接物理会话,若放我数据库,须先获得数据库连接.常用方法 》Statement createStatement() throws SQLException 返回 Statement 对象 》PreparedStatement prepareStatement(Strin sql) throws SQLException 返回编译的 Statement 对象 》CallableStatement preparedCall(Strin sql) throws SQLException 返回的 CallableStatement 对象用于存储过程调度 Statement:执行 DML SQL 的工具接口,常用方法: 》 ResultSet executeQuery(String sql) throws SQLException 执行查询,返回结果集对应的 ResultSet 对象 》int executeUpdate(String sql) throws SQLException 执行 DML 并返回受影响的行数 》boolean execute(String sql) throws SQLException 返回 boolean 表式执行成功与否 PreparedStatement :是 Statement 的子接口,允许数据库预编译 SQL,避免数据库每次重新编译,以后 每次只改变 SQL 的参数,性能较好,
常用方法 》ResultSet executeQuery() throws SQLException 执行
查询,返回结果集对应的 ResultSet 对象
》int executeUpdate() throws SQLException 执行 DML 并返回受影响的行数 》boolean execute() throws SQLException 返回 boolean 表式执行成功与否 注:上述方法因 SQL 预编译,无须接手 SQL 字符串,只是需要接收参数,故有如下方法 void setXxx(int paramIndex,Xxx value) ResultSet:包含访问结果集的方法,可通过列索引或列名获得列数据,常用方法 》boolean next() throws SQLException,将 ResultSet 定位到下一行,结果集的起始位在第一行之前 》void close()throws SQLException 释放 ResultSet 对象 》boolean absolute(int row)throws SQLException 将结果集移到指定行,若 row 是负值,则倒数移动 注:默认方法创建的 ResultSet 不支持 absolute 方法因为结果集不支持后移,若想支持,需要如此创建 :Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); :ResultSet rs=stmt.executeQuery(sql); #传统 JDBC 访问数据库步骤 》通过 Class.forName(String driverClass)注册数
据库驱动 》通过 DriverManager.getConnection(String url,String user,String password)获得数据库连接 对象 》通过 Connnection.createStatement()或者 Connection.createPreparedStatement(String
sql)创 建相应的 Statement 对象 》通过 Statement.execute(String sql)或者 PreparedStatement.execute()执行相应的 SQL,并返回 ResultSet 对象 》操作 ResultSet #2、数据库连接池 》数据库连接的建立及关闭极其耗资源,对系统性能影响尤为明显. 》传统数据库连接方式:一个数据库连接均对应一个物理连接,每次操作都要打开、关闭该物理操作, 这种频繁性,会造成系统性能下降,此时,考虑数据库连接池.
》 数据库连接池解决
方案:当应用程序启动时,系统主动建立足够的连接(按指定的初始化数据),并将这