标签:run success 异常 1.5 方法 statement delete not 处理
常见的配置文件格式:
	  1.properties
		    里面内容的格式 key=value
	  2.xml
若我们的配置文件为properties,并且放在src目录下.
名字存为jdbc.properties
1 driverClass = com.mysql.jdbc.Driver 2 url = jdbc:mysql://localhost:3306/day02 3 user = root 4 password = 123456
我们可以通过 ResourceBundle工具快速获取里面的配置信息
	  使用步骤:
		    1.获取ResourceBundle 对象:
			      static ResourceBundle getBundle("文件名称不带后缀名") 
		    2.通过ResourceBundle 对象获取配置信息 
			      String getString(String key) :通过执行key获取指定的value
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ResourceBundle; public class JdbcUtils01 { static final String DRIVERCLASS; static final String URL; static final String USER; static final String PASSWORD; static{ //静态代码块 //获取ResourceBundle ctrl+2 松手按L //块编辑 alt+shift+a //变大写ctrl+shift+x //变小写ctrl+shift+y //向下复制一行alt+ctrl+下箭头 //向上复制一行alt+ctrl+上箭头 ResourceBundle bundle = ResourceBundle.getBundle("jdbc"); //获取指定内容 DRIVERCLASS = bundle.getString("driverClass"); URL = bundle.getString("url"); USER = bundle.getString("user"); PASSWORD = bundle.getString("password"); } static{ //注册驱动 try { Class.forName(DRIVERCLASS); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USER, PASSWORD); } /** * 释放资源 * @param conn 链接 * @param st 语句执行者 * @param rs 结果集 */ public static void closeResource(Connection conn, Statement st, ResultSet rs) { closeResultSet(rs); closeStatement(st); closeConn(conn); } /** * 释放链接 * @param conn 链接 */ public static void closeConn(Connection conn) { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } /** * 释放语句执行者 * @param st 语句执行者 */ public static void closeStatement(Statement st) { if (st != null) { try { st.close(); } catch (SQLException e) { e.printStackTrace(); } st = null; } } /** * 释放结果集 * @param rs 结果集 */ public static void closeResultSet(ResultSet rs) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs = null; } } }
1 //更新操作 2 //@Test 3 public void f4(){ 4 Connection conn = null; 5 ResultSet rs = null; 6 PreparedStatement st = null; 7 8 try { 9 conn = JdbcUtils01.getConnection(); 10 String sql = "update category set cname = ? where cid = ?"; 11 st = conn.prepareStatement(sql); 12 st.setString(1, "手机"); 13 st.setString(2, "c006"); 14 15 int i = st.executeUpdate(); 16 17 if(i==1){ 18 System.out.println("success"); 19 }else{ 20 System.out.println("fail"); 21 } 22 23 } catch (SQLException e) { 24 e.printStackTrace(); 25 }finally{ 26 //释放资源 27 JdbcUtils01.closeResource(conn, st, rs); 28 } 29 } 30 31 //删除操作 32 @Test 33 public void f5(){ 34 Connection conn = null; 35 ResultSet rs = null; 36 PreparedStatement st = null; 37 38 try { 39 conn = JdbcUtils01.getConnection(); 40 String sql = "delete from category where cid = ?"; 41 st = conn.prepareStatement(sql); 42 st.setString(1, "c006"); 43 44 int i = st.executeUpdate(); 45 if(i==1){ 46 System.out.println("success"); 47 }else{ 48 System.out.println("fail"); 49 } 50 } catch (SQLException e) { 51 e.printStackTrace(); 52 }finally{ 53 JdbcUtils01.closeResource(conn, st, rs); 54 } 55 }
案例2-通过连接池(数据源)优化我们的操作.
需求:
	  使用jdbc的时候,每操作一次都需要获取连接(创建)用完之后把连接释放掉了(销毁),通过连接池来优化curd操作.
连接池概述:
	  管理数据库的连接,
	作用:
		  提高项目的性能.
	  就是在连接池初始化的时候存入一定数量的连接,用的时候通过方法获取,不用的时候归还连接即可.
	  所有的连接池必须实现一个接口 javax.sql.DataSource接口
	
	获取连接方法:
		  Connection getConnection() 
	  归还连接的方法就是以前的释放资源的方法.调用connection.close();
  自定义一个连接池(理解思想)
	
常用连接池:
	  DBCP
	  C3P0
///////////////////
增前方法
	  1.继承
	  2.装饰者模式(静态代理)
	  3.动态代理
//////////////
装饰者模式:★★★
	  使用步骤:
		    1.装饰者和被装饰者实现同一个接口或者继承同一个类
		    2.装饰者中要有被装饰者的引用
		    3.对需要增强的方法进行加强
		    4.对不需要加强的方法调用原来方法
 ////////////////////////////////////
 常用的连接池:
	  DBCP:(理解)
		    apache组织
		    使用步骤:
			      1.导入jar包(commons-dbcp-1.4.jar和commons-pool-1.5.6.jar)
			      2.使用api
				        a.硬编码   
1 //创建连接池 2 BasicDataSource ds = new BasicDataSource(); 3 4 //配置信息 5 ds.setDriverClassName("com.mysql.jdbc.Driver"); 6 ds.setUrl("jdbc:mysql:///day07"); 7 ds.setUsername("root"); 8 ds.setPassword("1234");
   b.配置文件
					    实现编写一个properties文件
1 //存放配置文件 2 Properties prop = new Properties(); 3 prop.load(new FileInputStream("src/dbcp.properties")); 4 //设置 5 //prop.setProperty("driverClassName", "com.mysql.jdbc.Driver"); 6 //创建连接池 7 DataSource ds = new BasicDataSourceFactory().createDataSource(prop);
	C3P0:(★)
		  hibernate和spring使用
		  有自动回收空闲连接的功能.
		    使用步骤:
			      1.导入jar包(c3p0-0.9.1.2.jar)
			      2.使用api
				        a.硬编码(不推荐)
					          new ComboPooledDataSource()
				        b.配置文件
					          配置文件的名称:c3p0.properties 或者 c3p0-config.xml
					          配置文件的路径:src下
				
					编码只需要一句话
						new ComboPooledDataSource()//使用默认的配置
						new ComboPooledDataSource(String configName)//使用命名的配置 若配置的名字找不到,使用默认的配置
						
////////////////////////////
案例3-使用dbutils完成curd操作
技术分析:
	dbutils
dbutils:
	是apache组织的一个工具类,jdbc的框架,更方便我们使用
	使用步骤:
		1.导入jar包(commons-dbutils-1.4.jar)
		2.创建一个queryrunner类
			queryrunner作用:操作sql语句
				构造方法:
					new QueryRunner(Datasource ds);
		3.编写sql
		4.执行sql
			query(..):执行r操作
			update(...):执行cud操作
////////////////////////////
核心类或接口
	QueryRunner:类名
		作用:操作sql语句
		构造器:
			new QueryRunner(Datasource ds);
		注意:
			底层帮我们创建连接,创建语句执行者 ,释放资源.
		常用方法:
			query(..):
			update(..):
	
	DbUtils:释放资源,控制事务 类
		closeQuietly(conn):内部处理了异常
		commitAndClose(Connection conn):提交事务并释放连接
		....
	
	ResultSetHandler:封装结果集 接口
		
		 ArrayHandler, ArrayListHandler, BeanHandler, BeanListHandler, ColumnListHandler, KeyedHandler, MapHandler, MapListHandler, ScalarHandler
		 
		 (了解)ArrayHandler, 将查询结果的第一条记录封装成数组,返回
		 (了解)ArrayListHandler, 将查询结果的每一条记录封装成数组,将每一个数组放入list中返回
		 ★★BeanHandler, 将查询结果的第一条记录封装成指定的bean对象,返回
		 ★★BeanListHandler, 将查询结果的每一条记录封装成指定的bean对象,将每一个bean对象放入list中 返回.
		 (了解)ColumnListHandler, 将查询结果的指定一列放入list中返回 
		 (了解)MapHandler, 将查询结果的第一条记录封装成map,字段名作为key,值为value 返回
		 ★MapListHandler, 将查询结果的每一条记录封装map集合,将每一个map集合放入list中返回
		 ★ScalarHandler,针对于聚合函数 例如:count(*) 返回的是一个Long值
标签:run success 异常 1.5 方法 statement delete not 处理
原文地址:http://www.cnblogs.com/Nelsoner/p/6768978.html