JDBC的使用

JDBC:Java数据库连接,提供了一种与平台无关的用于执行SQL语句的标准javaAPI,可以方便实现多种关系型数据库的统一操作。

 

一段JDBC访问数据库的代码:

 

package com.gc.acion;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 * 一段经典的JDBC访问Oracle数据库的代码
 * @author wangyj13357
 */
public class SimpleJDBC {
	public static void main(String[] args) throws Exception {
		//加载数据库驱动
		Class.forName("oracle.jdbc.driver.OracleDriver");
		
		//创建连接对象
		Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","hr","hr123456");
		
		//创建执行对象
		Statement statement = conn.createStatement();
		//PreparedStatement ps = conn.prepareStatement("select * from tbstudent");
		
		//执行sql
		ResultSet result = statement.executeQuery("select * from tbstudent");
		//ResultSet result = ps.executeQuery();
		
		//处理数据集
		while(result.next()){
			int id = result.getInt("id");
			String name = result.getString("name");
		}
		
		//释放数据库资源
		if(result != null){
			result.close();
		}
		if(statement != null){
			statement.close();
		}
//		if(ps != null){
//			ps.close();
//		}
		if(conn != null){
			conn.close();
		}
		
	}
}


以上代码一共涉及到了几个对象:

 

Connection:数据库连接:可以通过DriverManager得到连接。数据库连接信息有数据库IP,端口,实例,用户名和密码

Statement和PreparedStatement:执行对象

区别:Statement是逐条单独编译单独执行,效率较慢。

PreparedStatement支持预编译,批处理。也是JDBC的存储过程。

ResultSet:数据集,查询数据库得到的结果

 

一段JDBC修改数据库的例子:

 

package com.gc.acion;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

/**
 * 修改数据库的代码
 * @author wangyj13357
 *
 */
public class UpdateJDBC {
	Connection conn =null;
	PreparedStatement ps = null;
	
	public void insertData() throws Exception{
		try {
			//加载数据库驱动
			Class.forName("oracle.jdbc.driver.OracleDriver");
			//需要执行的sql
			String sql = "insert into tbstudent values(001,'wangyj')";
			//初始化连接对象
			conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "hr", "hr12345");
			//是否自动提交,开始启动事务
			conn.setAutoCommit(false);
			//得到执行对象
			ps = conn.prepareStatement(sql);
			//执行sql
			ps.executeUpdate();
			//提交事务
			conn.commit();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			//失败则事务回滚
			conn.rollback();
			e.printStackTrace();
		} finally{
			//释放数据库资源
			if(ps!=null){
				ps.close();
			}
			if(conn!=null){
				conn.close();
			}
		}
		
	}
}

 

 

 

 

 

 

浅要解析DriverManager和DataSource的区别:

DriverManager是直接和数据库地层连接(三个getConnection方法都是含参的,即要将连接的地址,实例,用户名密码写进去)


DataSource是用数据库连接池进行封装好获得连接的,访问量大的项目最好用连接池(可以在xml中配置数据库连接池,这样就不用在程序中指定了)

 

package javax.sql;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Wrapper;
import javax.sql.CommonDataSource;

public interface DataSource extends CommonDataSource, Wrapper {
	Connection getConnection() throws SQLException;

	Connection getConnection(String arg0, String arg1) throws SQLException;
}

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值