浅析MySQL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅析MySQL相关的知识,希望对你有一定的参考价值。
JDBC是一种用于执行SQL语句的Java的API.可以为多种关系型数据库提供统一的访问.它是由一组使用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的主要内容,如果未能解决你的问题,请参考以下文章