测试方向基础——JDBC数据库连接技术浅析( 二 )


(1)接口:防止SQL注入攻击(使用占位符“?”); 提高SQL的执行性能(在执行之前有预处理); 避免使用SQL方言; 提高JDBC中有关SQL代码的可读性 。
(2)接口用于执行SQL存储过程的接口
(3)常用方法:
* :执行给定SQL语句,可能返回多条结果
* :执行给定的 SQL 语句,该语句返回单个对象
* 执行,该语句可能为 、 或 DELET给定 SQL 语句
* :获取生成此对象的对象
* close:立即释放此对象的数据库和 JDBC 资源,而不是等待该对象自动关闭时发生此操作
* :获取结果集合的行数
* :获取驱动程序等待对象执行的秒数
类:是的子接口 。用类效率会更高 。
实例要通过对象调用( sql)方法获得 。
常用方法:
用于执行 SQL 存储过程的接口
继承了接口,所以也继承了的方法(很少用)
:表示数据库结果集的数据表,通常通过执行查询数据库的语句生成 。
其对象具有指向其当前数据行的光标
常用方法:(int ):以 Java 编程语言中的形式获取此对象的当前行中指定列的值
while (rs.next()) {System.out.println(rs.getString("name"));}
常用方法:
关于关闭数据库的连接,一共有三处:
检测是否关闭,否则关闭
检测是否关闭,否则关闭
检测是否关闭,否则关闭
if(rs!=null)try{rs.close();}catch(Exception e){e.printStackTrace();}if(stmt!=null)try{stmt.close();}catch(Exception e){e.printStackTrace();}if(conn!=null)try{conn.close();}catch(Exception e){e.printStackTrace();}
数据库造作的完整封装(DAO) 所以我们对于一张表的所有操作,在Java程序中体现到了一个实体类的所有的操作 。
一般标准工程中一个实体类会有一个对应的DAO类(Data),来进行这个类的所有的操作 。
下面也都是代码的栗子了:
创建一个数据库
package xxx.www.xhx;import java.net.CookieHandler;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;//创建数据库public class Demo1 {public static void main(String[] args) {String connUrl = "jdbc:mysql://127.0.0.1:3306";String driverStr = "com.mysql.jdbc.Driver";Statement stmt = null;Connection con = null;try {// 1.加载驱动Class.forName(driverStr);// 2.建立数据库的连接con = DriverManager.getConnection(connUrl, "root", "123456");if (!con.isClosed()) {System.out.println("数据库连接成功");// 3.使用statement执行SQL语句stmt = con.createStatement();boolean flag = stmt.execute("create database demo1112");// 创建一个数据库// 4.对执行结果进行处理if (flag) {System.out.println("数据库创建成功");} else {System.out.println("数据库创建失败");}}} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {// 5.关闭数据库的连接if (stmt != null) {stmt.close();}if (con != null) {con.close();}} catch (Exception e) {// TODO: handle exception}}}}
查询
在创建的数据库中,可以加入一个表,我这里命名为, 下面代码用来查询表中的信息 。
提示,URL后的?=true&=utf-8&=true或者仅加上?=true是因为警告:在没有SSL连接的情况下建立ssl连接不建议使用服务器的身份验证 。此用此方法,仅仅是初学,不同太在意 。
package xxx.www.xhx;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;//查询public class Demo2 {public static void main(String[] args) throws ClassNotFoundException, SQLException {String connUrl = "jdbc:mysql://127.0.0.1:3306/test0509?useUnicode=true&characterEncoding=utf-8&useSSL=true";String driverStr = "com.mysql.jdbc.Driver";String querySql = "select id,name as username,password,age from user";Class.forName(driverStr);Connection conn = DriverManager.getConnection(connUrl, "root", "123456");Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery(querySql);// 执行sql语句while (rs.next()) {int id = rs.getInt(1);// 对应的查询结果的第几列String name = rs.getString("username");// 形参是字段名String password = rs.getString("password");System.out.println("---" + id + "---" + name + "----" + password);}rs.close();stmt.close();conn.close();}}