首页 > 代码库 > 浅析MySQL(二)
浅析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.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(二)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。