JDBC01学习自我总结期末篇

经过两天多的康师傅教导,我学会了如何利用JDBC(Java Data Base Connectivity)对MySQL进行数据库操作。目前来说最终的模板是利用德鲁伊数据库连接池,以及结合数据库事务知识Apache-DBUtils的框架,和JDBC的API设计出最终JAVA操作数据库的模版。

1.获取数据库的连接

Connection conn = JDBCUtils.getConnection(); //方式1:手动获取连接 方式2:数据库连接池

conn.setAutoCommit(false);                   //体现事务
2.如下的多个DML操作,作为一个事务出现:

操作1:需要使用通用的增删改查操作			//通用的增删改查操作如何实现?
									//方式1:手动使用PreparedStatement实现
操作2:需要使用通用的增删改查操作			//方式2:使用dbutils.jar中QueryRunner类

操作3:需要使用通用的增删改查操作


conn.commit();

3.如果出现异常,则:
conn.rollback();

4.关闭资源
JDBCUtils.closeResource(..,...,...);		//方式1:手动关闭资源  方式2:DbUtils类的关闭方法

德鲁伊数据库连接池实现!!

/**
	 *   使用Druid德鲁伊数据库“连接池”技术
	 */
	
	private static DataSource source1;
	static{
		try {
			Properties pros = new Properties();
			
			InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("druid.properties");
			
			pros.load(is);
			
			source1 = DruidDataSourceFactory.createDataSource(pros);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static Connection getConnection3() throws SQLException{
		
		Connection conn = source1.getConnection();
		return conn;
	}
	

手动获取数据库连接:(其次)

	public static Connection getConnection() throws Exception {
		// 1.读取配置文件中的4个基本信息
		InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");

		Properties pros = new Properties();
		pros.load(is);

		String user = pros.getProperty("user");
		String password = pros.getProperty("password");
		String url = pros.getProperty("url");
		String driverClass = pros.getProperty("driverClass");

		// 2.加载驱动
		Class.forName(driverClass);

		// 3.获取连接
		Connection conn = DriverManager.getConnection(url, user, password);
		return conn;
	}

使用dbutils.jar中QueryRunner类(首选)

 

手动使用PreparedStatement实现,之前文章有写到终极版(其次)

方式1:手动关闭资源

public static void closeResource(Connection conn,Statement ps,ResultSet rs){
		try {
			if(ps != null)
				ps.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		try {
			if(conn != null)
				conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		try {
			if(rs != null)
				rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

 方式2:DbUtils类的关闭资源方法

/**
	 * 
	 * @Description 使用dbutils.jar中提供的DbUtils工具类,实现资源的静关闭
	 * @author shkstart
	 * @date 下午4:53:09
	 * @param conn
	 * @param ps
	 * @param rs
	 */
	public static void closeResource1(Connection conn,Statement ps,ResultSet rs){

		
		DbUtils.closeQuietly(conn);
		DbUtils.closeQuietly(ps);
		DbUtils.closeQuietly(rs);
	}

最终模板实例演示:

//测试插入
	@Test
	public void testInsert() {
		Connection conn = null;
		try {
			QueryRunner runner = new QueryRunner();
			conn = JDBCUtils.getConnection3();
			System.out.println(conn.getAutoCommit());//true
			//1.取消数据的自动提交
			conn.setAutoCommit(false);
			String sql = "insert into customers(name,email,birth)values(?,?,?)";
			int insertCount = runner.update(conn, sql, "蔡","caixukun@126.com","1997-09-08");
			//模拟网络异常
			System.out.println(10 / 0);
		    System.out.println("添加了" + insertCount + "条记录");
			//2.提交数据
			conn.commit();
		} catch (Exception  e) {
			e.printStackTrace();
			//3.回滚数据
			try {
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
		}finally{
			try {
				conn.setAutoCommit(true);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			JDBCUtils.closeResource(conn, null);
		}
		
	}
	

使用API时记得编写配置文件喔

以下是德鲁伊线程池的

 以下是JDBC的配置文件

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值