首页 > 代码库 > 浅析MySQL(二)

浅析MySQL(二)

    JDBC是一种用于执行SQL语句的JavaAPI.可以为多种关系型数据库提供统一的访问.它是由一组使用Java语言编写的类或接口组成(SUN公司定义).

    创建JDBC的连接在三层架构的dao层,步骤如下

1 步骤1:搭建开发环境,引入数据库的驱动.2 步骤2:在程序中加载数据库驱动.3 步骤3:获得数据库连接.4 步骤4:编写SQL.执行SQL.5 步骤5:释放资源.

 

     Connection由DriverManager创建的.代表的是一个连接的对象.

    Statement对象由Connection对象创建的.代表是可以运行SQL的类.

    PreparedStatement对象.对SQL进行预编译.(防止SQL注入的漏洞.)

    ResultSet对象由Statement对象中executeQuery(String sql);返回的.ResultSet对象代表的是select查询后的结果.

    资源的释放极其重要,对于connection而言,不能及时关闭,会导致系统宕机,晚创建,早释放!!!!!

    1.创建一个JDBC工具类

  1 package cn.it.JDBCutils;  2   3 import java.io.IOException;  4 import java.io.InputStream;  5 import java.sql.Connection;  6 import java.sql.DriverManager;  7 import java.sql.ResultSet;  8 import java.sql.SQLException;  9 import java.sql.Statement; 10 import java.util.Properties; 11 /** 12  * 自定义JDBC连接 13  * JDBC的工具类 14  * @author 何KOO 15  * @version 1.0 2016年10月3日19:28:49 16  * 17  */ 18 public class JDBCUtils { 19      20     private static final String DRIVERCLASS; 21     private static final String URL; 22     private static final String USERNAME; 23     private static final String PASSWORD; 24     static{ 25          26         //解析文件 27         Properties properties = new Properties(); 28          29         //使用类加载器获得属性文件的输入流 30         InputStream inStream =  31                 JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties"); 32         try { 33              34             //加载属性文件 35             properties.load(inStream); 36          37         } catch (IOException e) { 38              39             e.printStackTrace(); 40         } 41         DRIVERCLASS = properties.getProperty("jdbc.driverclass"); 42          43         URL = properties.getProperty("jdbc.url"); 44          45         USERNAME = properties.getProperty("jdbc.username"); 46          47         PASSWORD = properties.getProperty("jdbc.password"); 48     } 49     /** 注册驱动 */ 50     public static void     loadDriver(){ 51         try { 52              53             //反射解决了耦合性 54             Class.forName(DRIVERCLASS); 55              56         } catch (ClassNotFoundException e) { 57              58             e.printStackTrace(); 59         } 60     } 61      62     /** 获得链接  */ 63     public static Connection getConnection(){ 64          65         Connection conn = null; 66          67         JDBCUtils.loadDriver(); 68          69         try { 70             conn = DriverManager.getConnection(URL,USERNAME,PASSWORD); 71              72         } catch (SQLException e) { 73              74             e.printStackTrace(); 75         } 76         return conn; 77     } 78     /** 释放资源*/ 79     public static void release(Statement stmt,Connection conn){ 80          81         if (stmt != null) { 82             try { 83                  84                 stmt.close(); 85                  86             } catch (SQLException e) { 87                  88                 e.printStackTrace(); 89             } 90         } 91         stmt = null; 92          93         if (conn != null) { 94             try { 95                  96                 conn.close(); 97                  98             } catch (SQLException e) { 99                 100                 e.printStackTrace();101             }102         }103         conn = null;104     }105         106     /** 释放资源*/107     public static void release(ResultSet rs,Statement stmt,Connection conn){108         if (rs != null) {109             try {110                 rs.close();111             } catch (SQLException e) {112                 e.printStackTrace();113             }114         }115         rs = null;116         117         if (stmt != null) {118             try {119                 stmt.close();120             } catch (SQLException e) {121                 e.printStackTrace();122             }123         }124         stmt = null;125         126         if (conn != null ) {127             try {128                 conn.close();129             } catch (SQLException e) {130                 e.printStackTrace();131             }132         }133         conn = null;134     }135 }

 

      2.配置propertie文件.在项目的src目录下,内容如下

jdbc.driverClass=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql:///usersjdbc.username=rootjdbc.password=abc

      3.测试这个工具类

 1 package cn.it.test; 2  3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7  8 import cn.it.JDBCutils.JDBCUtils; 9 10 /**11  * 这是一个JDBC的入门案例12  * @author 何KOO13  * @version 1.0 2016-10-03 19:1614  */15 public class Demo1 {16     public void test(){17          Connection conn = null;18          19          PreparedStatement ppst = null;20          21          ResultSet rs = null;22          23          try {
24 conn = JDBCUtils.getConnection();25 26 //问好是占位符27 String sql = "select * from user where name=?";28 //预编译29 ppst = conn.prepareStatement(sql);30 //设置?为tom31 ppst.setString(1, "tom");32 //返回集合33 rs = ppst.executeQuery();34 //当游标向下移动有值时35 while (rs.next()) {36 //获取值37 rs.getString("id");38 39 rs.getString("name");40 }41 } catch (SQLException e) {42 e.printStackTrace();43 }finally{44 //资源释放45 JDBCUtils.release(rs, ppst, conn);46 }47 48 }49 }

 

浅析MySQL(二)