bos 获取数据库连接_深入学习JavaWeb(十): JDBC增删改查,C3P0连接池,dbutils的使用...

本文转自与博客园一杯凉茶的博客.

一、JDBC是什么?

Java Data Base Connectivity,java数据库连接,在需要存储一些数据,或者拿到一些数据的时候,就需要往数据库里存取数据,那么java如何连接数据库呢?需要哪些步骤?

1、注册驱动

什么是驱动?

驱动就是JDBC实现类,通俗点讲,就是能够连接到数据库功能的东西就是驱动,由于市面上有很多数据库,Oracle、MySql等等,所以java就有一个连接数据库的实现规范接口,定义一系列的连接数据库接口(java.sql.Driver接口),但是不提供实现,而每个数据库厂家来提供这些接口的具体实现,这样一来,不管使用的是什么数据库,我们开发者写的代码都是相同的,就不必因为数据库的不同,而写法不同,唯一的不同就是数据库驱动不一样,使用mysql,那么就必须使用mysql的驱动,使用Oracle就必须使用oracle的驱动实现类。 看下面mysql连接数据的原理图,看看驱动是在哪里,起什么作用。就明白了什么是驱动了。

02148397777ffe56a2feb78b6587002b.png

DriverManager,一个工具类,是用于操作管理JDBC实现类的,

原始写法:DriverManager.register(new Driver()); //因为使用的是MySql,所以在导包时就需要导入com.mysql.jdbc.Driver

现在写法:Class.forName("com.mysql.jdbc.Driver"); //不用导包,会执行com.mysql.jdbc.Driver类中的静态代码块,其静态代码块的内容为

static {

try {

java.sql.DriverManager.registerDriver(new Driver());

} catch (SQLException E) {

throw new RuntimeException("Can't register driver!");

}

}

会发现第二种加载驱动的方法的底层其实就是第一种加载驱动。为什么要这样呢?原因很简单, 第一种是硬编程,直接将数据库驱动给写死了,无法扩展,如果使用第一种,那么连接的数据库只能是mysql,因为导包导的是mysql的驱动包,如果换成Oracle,就会报错,需要在代码中将Oracle的驱动包导入,这样很麻烦,而第二种写法就不一样了,第二种是使用的字符串方法注册驱动的,我们只需要将该字符串提取到一个配置文件中,以后想换成oracle数据库,只需要将该字符串换成oracle驱动的类全名即可,而不需要到代码中去修改什么东西。

2、获得连接

使用DriverManage来获得连接,因为DriverManager是驱动实现类的管理者

Connection conn = DriverManager.getConnection(url,user,password);

url:确定数据库服务器的位置,端口号,数据库名

jdbc:mysql://localhost:3306/db

user:登录名称,默认root

password:密码,默认root

这里只是说mysql,别的数据库,url格式就不同了。

MySQL jdbc:mysql://localhost:3306/db 默认端口是3306,粗体为连接时使用的数据库名

Oracle jdbc:oracle:thin:@localhost:1521:db 默认端口号1521

DB2 jdbc:db2://localhost:6789/db 默认端口号6789

SQLServer jdbc:microsoft:sqlserver://localhost:1433;databaseName=db 默认端口号1433

SQLServer 2005 jdbc:sqlserver://localhost:1433;databaseName=db 默认端口号1433

3、获取执行sql语句对象,PraparedStament对象

通过Connection对象获取Statement或者PraparedStament对象(使用它)处理sql

Statement

Statement st = conn.createStatement(); //获取sql语句执行对象

st.excuteUpdate(sql); //执行增删改语句

st.excuteQuery(sql); //执行查询语句

sql语句必须是完整的。

PraparedStatment

sql语句可以不是完整的,可以将参数用?替代,然后在预编译后加入未知参数

PraparedStatment ps = conn.prapareStatement(sql); //获取sql语句执行对象praparedStatment

赋值

ps.setInt(Index,value); ps.setString(index,value); //可以设置很多中类型,index从1开始,代表sql语句中的第几个未知参数,

ps.excuteUpdate(); //执行增删改语句

ps.excuteQuery(sql); //执行查询语句

这两个的区别,常使用的是PraparedStatment对象,因为它可以预编译,效率高,可以设置参数等等优点

4、获得结果集对象

int count = ps.excuteUpdate(); //执行增删改的sql语句时,返回一个int类型的整数,代表数据库表影响的行数,

Result result = ps.excuteQuery(); //执行查询sql语句时,返回一个结果集对象,该对象装着所有查询到的数据信息,一行一行的存储数据库表信息。

5、处理结果

对查询到的Result结果进行处理,拿到所有数据,并封装成对象。

while(rs.next()){

获取行数据的第一种方式

rs.getString(index);//index代表第几列,从1开始

获取行数据的第二中方式

rs.getString(string); //string:代表字段名称。

}

8ddd1247bf61afd9af512f1b4d7ff5ac.png

总结:java的JDBC就分为5步,4个属性

属性:driver、url、user、password

五步:

注册驱动、获取连接、获取执行sql语句对象、获取结果集对象、处理结果。

二、JDBC的CURD操作

创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)操作

查询所有(读取Retrieve)

findAll()

 1 @Test 2 public void findAll() throws Exception{ 3 //1 注册驱动 4 Class.forName("com.mysql.jdbc.Driver"); 5 //2 获得连接 6 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值