JDBC基础

一、概述

      JDBC(Java Database Connectivity),是sun提出的一套访问各种数据库系统的API,它是一套规范,标准化了连接,查询和事务处理的语法,以及查询结果的数据结构。利用JDBC,你可以对数据库执行SQL语句,来完成和数据库的交互。无论是Hibernate也好,iBatis也好,其实现的基础,都是JDBC。


下面这幅图展示了Java Application是如何通过JDBC来和数据库进行交互的:


 

首先,Application调用JDBC接口,而JDBC则导入JDBC驱动(Driver),最终和数据库交互的是各种驱动。

 


二、JDBC驱动分类


JDBC的驱动分成四类:
1. JDBC-ODBC桥驱动
通过驱动调用ODBC来访问数据库。

2. 本地API部分JAVA驱动
利用开发商提供的本地库直接与数据库通信。

3. JDBC-NET纯JAVA驱动
与DBMS协议无关,不安装本地库。

4. 本地协议纯JDBC驱动
将JDBC调用直接转换为DBMS所用的网络协议。



三、JDBC体系结构

 

我们来看看JDBC访问数据库的步骤:

    具体每个接口就不详细介绍了。我们来看一下示例代码吧

		Connection conn = null;
		Statement stmt = null;
//		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		try {
			// 1. 注册Driver
//			DriverManager.registerDriver(new oracle.jdbc.Driver());
			Class.forName("oracle.jdbc.OracleDriver");
			
			// 2. 建立连接
			conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:TESTDB", "user", "pwd");
			// 设置事务方式
			conn.setAutoCommit(false);
			
			// 3. 创建Statement对象
			stmt = conn.createStatement();
			
			// 4. 执行操作
			// 4.1 read
			rs = stmt.executeQuery("select * from user u");
			while(rs.next()) {
				int id = rs.getInt("id");
				String name = rs.getString("name");
				// print it
			}
			
			// 4.2 create
			stmt.executeUpdate("insert into user values (5, 'xx', 'xxx')");
			
			// 4.3 update
			stmt.execute("update user u set u.name = 'bbb' where u.id = 5");
			
			// 4.4 delete
			stmt.execute("delete from user u where u.id = 2");
			
			// 5. 提交事务
			conn.commit();
			
			rs.close();
			stmt.close();
			conn.close();
			
		} catch (ClassNotFoundException ce) {
//			log.error("xxx" + ce.getMessage());
			try {
				// only for cud operations
				conn.rollback();
			} catch (SQLException e) {
//				log.error("xxx" + e.getMessage());
			}
		} catch (SQLException se) {
//			log.error("xxx" + se.getMessage());
			try {
				conn.rollback();
			} catch (SQLException e) {
//				log.error("xxx" + e.getMessage());
			}
		} catch (Exception e) {
//			log.error("xxx" + e.getMessage());
		} finally {
			try {
				if(rs != null) {
					rs.close();
				}
				if(stmt != null) {
					stmt.close();
				}
				if(conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				// log.error('xxx');
			}
		}
 

写得非常简单,因为现在基本上接触不到JDBC的具体代码了。写这篇文章的目的,主要就是让自己在忘了JDBC的时候,能在两分钟之内回想起来。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值