JDBC复习

1.JDBC的概念

JDBC:java操作数据库,是oracle公司提供的一套接口,其子类由数据库厂商实现。

2.JDBC操作步骤

1.创建数据库和表结构
2.创建项目
3.导入jar包
4.编码实现对数据库的操作

public class practice {
	@Test
	/*
	 * JDBC执行sql中read语句的案例
	 */
	public void Jdbc() throws Exception {
		//注册驱动
		Class.forName("com.mysql.jdbc.Driver");
		String password = "1234";
		//获取连接
		Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/practice"
				, "root", password);
		//创建预编译语句执行者
		String sql = "select * from weapon;";
		PreparedStatement st = conn.prepareStatement(sql);
		//接受结果集
		ResultSet rs = st.executeQuery();
		//打印结果
		while(rs.next()){
			System.out.println(rs.getString("pid")+rs.getString("pname"));
		}
		//关闭资源
		rs.close();
		st.close();
		conn.close();
	}
}

3.JDBC-api详解

(1)DriverManager接口:管理了一组jdbc的操作类

常用方法:

1)注册驱动:static void registerDriver(Driver driver)

通过查看 com.mysql.jdbc.Driver的源码 有如下代码

static {
	try {
	java.sql.DriverManager.registerDriver(new Driver());
	} catch (SQLException E) {
		throw new RuntimeException("Can't register driver!");
    }
}

当我们执行驱动注册方法registerDriver时,静态代码块执行一次。等于驱动注册了两次,而我们只需要将静态代码块执行一次----类被加载到内存中时会执行静态代码块,并且只执行一次。
现在只需要将类加载到内存中即可:
方式一:Class.forName(“com.mysql.jdbc.Driver”)
方式二:Driver.class
方式三:new Driver().getClass

2)获取连接:static Connection getConnection(String url, String user, String password)
url:告诉我们连接什么类型的数据库及连接那个数据库
  mysql:jdbc:mysql://localhost:3306/数据库名称
  oracle:jdbc:oracle:thin@localhost:1521@实例
user:账户名
password:密码

(2)Connection:连接相关
常用方法:

获取语句执行者:
Statement createStatement():获取普通的语句执行者
PreparedStatement prepareStatement(String sql):获取预编译语句执行者
CallableStatement prepareCall(String sql):获取调用存储过程的语句执行者

(3)Statement:语句执行者 常用其子类:PreparedStatement 预编译语句执行者
常用方法:

1)设置参数:setXxx(int,Object)

String sql = "select * from product where id = ?;";
//设置第一个问号的内容为12
ps.setInt(1,12);

2)执行sql语句:
ResultSet executeQuery():执行r语句,返回结果集
int excuteUpdate():执行cud语句,返回值int为受影响的行数

(4)ResultSet:结果集,存储查询语句之后返回的结果
常用方法:

1)boolean next():判断是否有下一条记录,若有则将指针移到下一行,没有则返回false
指针一开始处于第一条记录的上面

2)getXxx(int或String):获取结果集中内容
参数为int时:获取int列的内容
参数为String时:获取String字段名的内容
例如想要获取cname的内容:getString(“cname”)

4.配置文件:后缀名为.properties或.xml
若将.properties配置文件放在src目录下,便可以通过ResourceBundle工具获取里面的信息(.properties文件里的内容格式为key=value)

//获取ResourceBundle对象
ResourceBundle bundle = ResourceBundle.getBundle("配置文件名称不带后缀名");
//通过key获取指定value	
bundle.getString(key)

5.连接池:管理数据库的连接
在JDBC中,每执行一次操作都要创建一个连接,操作完成后释放掉该链接,可以通过连接池来优化操作。
连接池原理:在连接池初始化的时候存入一定量的连接,用的时候获取一个连接,用完后归还连接即可。
所有连接池必须实现javax.sql.DataSource接口

常用连接池:c3p0
特点:可以自动回收空闲连接
常与c3p0配置文件一起使用(c3p0.properties或c3p0-config.xml)
创建连接池:Datasource ds = new ComboPooledDataSource();

6.dbutils工具类:apache的一个工具类
使用方法:
导入jar包:commons-dbutils-1.4.jar
创建一个queryrunner类:操作sql语句
编写sql语句
执行sql语句
核心类和接口:

(1)QueryRunner:操作sql语句
底层会创建连接,创建语句执行者,释放资源
构造方法:new QueryRunner(Datasource ds);
常用方法:query():执行r操作;update():执行cud操作

(2)ResultSetHandler:封装结果集(接口)
常见子类:
ArrayHandler:将查询结构的第一条封装成数组并返回
ArrayListHandler:将查询结果的每一条记录封装成数组,将每个数组放入list中返回
BeanHandler:将查询结果的第一条记录封装成指定的bean对象返回
BeanListHandler:将查询结果的每一条记录封装成指定的bean对象,将每个bean对象放入list中返回
ColumnListHandler:将查询结果的指定一列放入list中返回
MapHandler:将查询结果的第一条记录封装成map,字段名作为key,值作为value返回
ScalarHandler:针对于聚合函数,例如:count(*)返回一个Long值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值