浅析MySQL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅析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.Driver
jdbc.url=jdbc:mysql:///users
jdbc.username=root
jdbc.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 何KOO
13  * @version 1.0 2016-10-03 19:16
14  */
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 //设置?为tom 31 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的主要内容,如果未能解决你的问题,请参考以下文章

mysql线程池的实现原理浅析

浅析XSS的几种测试方法

浅析MySQL 8.0 redo log

线程浅析

部分代码片段

浅析Minium,微信小程序自动化测试框架