黑马程序员技术交流社区
标题:
【西安校区】JDBC简述
[打印本页]
作者:
西安Java组
时间:
2018-3-22 18:01
标题:
【西安校区】JDBC简述
本帖最后由 逆风TO 于 2018-3-28 10:58 编辑
JDBC是什么?JDBC(Java Data Base Connectivity)是一种用于执行于SQL语句的Java 的API接口技术,他可以为多型关系型数据库提供了统一的访问接口,用Java语言编写类和接口,它也是Java访问数据库的标准规范。所以他是一个最为基本的标准,根据JDBC的接口技术,可以构建很多很高级的工具和接口,从而使程序员可以编写数据库的应用程序,以便于更好的维护数据库,不至于让数据库的操作那么复杂。
JDBC需要连接驱动,那么问题来了,驱动是什么?驱动是两个设备之间要进行通信,还要满足一定的数据格式,这个数据格式是由数据库设备提供商提供,设备供应商提供了驱动软件,我们通过软件可以与该数据库进行通信。
我们以MySQL为例,我们使用Sun公司的mysql设备驱动是mysql-connector-java-5.1.39-bin.jar
那么JDBC是怎么工作的呢?我们了解了数据库的规范(JDBC)之后,而生产数据库的生产厂商提供了规范的实现类,我们把这个实现类叫做驱动。
我们知道JDBC是个API接口,数据库厂商用驱动去实现JDBC的API接口,如果我们没有驱动程序,那么我们就没有办法完成数据库的连接,也就是我们与数据库没有关系,我们也就操作不了数据库,每个数据库厂商都需要把自己的数据库驱动提供出来,这样的话,就可以连接到该数据库公司的数据库。
我们在掌握JDBC之前首先要掌握SQL语句的使用,我们必须把我们的数据库中的表给建出来,因为这样,我们才可以使用JDBC对分类表进行CURD操作。
我们可以使用如下的SQL语句
create database sJDBC;
use sJDBC;
create table sort(
sid int PRIMARY KEY ,
sname varchar(50)
);
insert into sort(sname) values('家电');
insert into sort(sname) values('食品');
insert into sort(sname) values('文具');
我们在开发JDBC之前要知道开发JDBC的步骤了。
导入上边说过的MySQL数据驱动包之后。
第一步我们要注册驱动,那么JDBC提供了注册驱动的接口,这个接口是java.sql.Driver,数据库的驱动包也提供了对应的实现类:com.mysql.jdbc.Driver,那么DriverManager工具类的注册驱动的方法registerDriver()这个方法,这个方法的参数是MySQL提供的对应的驱动包的实现类。所以我们通过如下的语句进行注册:DriverManager.registerDriver(new com.mysql.jdbc.Driver());但是目前来说,没有这么干的,原因有两个,第一个是因为不便于后期维护,第二个就是最重要的,那就是驱动被我们注册了两次。我们利用Java的反射机制获得了驱动类的对象,我们就可以操作驱动类了,但是我们在Sun公司提供的MySQL的JDBC的驱动的源代码中发现,Driver类已经自动注册了,也就是说,不需要我们程序设计人员进行注册驱动。
第二步是我们要获得连接,我们获得连接方法是通过JDBC的Connection实现类 获取数据库的连接,我们连接数据的代码如下
Connection con =DriverManager.getConnection(“jdbc:mysql://localhost:3306/sJDBC”,”root”,”123456”);
在这里我们解释一下,getConnection()这个方法,这个方法的参数有三部分组成,分别是,需要连接数据的位置URL,user 用户名 password 密码
第三步是我们获得语句执行过程的步骤。
String sql = "SQL语句";
获取Statement语句执行过程:Statement stat =con.createStatement();
这个过程的常用的方法有三个:
int executeUpdate(String sql);
ResultSet executeQuery(String sql);
boolean exeute(String sql);
第四步是我们处理结果集,当然我们在执行增删改的时候,我们不需要处理结果集,所以当进行增删改的时候的时候,这一步可以跳过。
ResultSet 我们可以把它看做是一个二维表,我们可以调用它的next()方法只想某行记录,当第一次调用这个方法的时候,结果集便指向了第一行记录的位置,我们就可以使用ResultSet提供的getXXX(int index)方法(索引从1开始)来获取指定列的数据。
处理结果集的常用方法有四个:
Object getObject(int index)/Object getObject(String name);
String getString(int index)/String getString(String name);
int getInt(int index)/ int getInt(String name);
double getDouble(int index)/double getDouble(String name)
第五步是释放资源,我们的JDBC的连接数据库之后,和IO流是一样的,我们在使用之后,我们关闭的使用后的东西的顺序是和栈的存取差不多,我们是先得到的后关闭,后得到的先关闭。
rst.close();
stat.close();
con.close();
说完了JDBC的开发过程,我们需要注意的SQL语句的注入问题。
我们在登录的使用,我们需要注意的是SQL的注入,为了解决这个问题,我们的JDBC提供了预处理对象PreparedStatement。
预处理对象代码:
PreparedStatement psmt =con.preparedStatement(sql);
我们在执行SQL的语句是这样的
当我们在执行增删改的时候,我们需要执行exeuteUpdate()这个方法的时候,我们就可以执行增删改的方法,当我们在执行查询的时候,我们需要执行excute()这个方法就可以执行预处理对象的查询方法。
我们通过预处理对象的executeUpdate方法,完成记录增删改的执行。那么他的操作过程必须如下所示:
1.注册驱动
2.获取连接
3.获取预处理对象
4.SQL语句利用占位符设置实际的参数
5.执行SQL语句
6.释放资源
截止目前,关于JDBC的操作就已经结束了,JDBC之前需要掌握SQL语句的知识,必须认真对待数据库的CURD的操作,我们之所以重视JDBC是因为我们的Java后端开发离不开数据库,所以我们重视JDBC,我们只有知道JDBC的工作原理与工作过程,我们才可以更好的学习和掌握Java这门语言的奇妙之处,我们才能感悟到很多公司使用Java作为的Web技术的好处,之所以很多公司使用Java进行开发,还有一个原因就是因为框架技术,Java语言是支持的最好的,从而使得Java这个常青树屹立不倒
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2