关于JDBC访问数据库,学JAVA的都来看看吧!
JDBC访问数据库
JDBC的常用接口和类
JDBC是一个规范,遵循JDBC接口规范,各个数据库厂家各自实现自己的驱动程序,应用在获取数据库连接时,需要以URL 的方式制定是哪种类型的驱动,在获得特定的链接之后,可按照固定的接口操作不同类型的数据库。
在JDBC中提供了四个类进行数据库管理的操作。
如果有想学习java的程序员,可来我们的java学习扣qun:94311,1692免费送java的视频教程噢!我整理了一份适合18年学习的java干货,送给每一位想学的小伙伴,并且每天晚上8点还会在群内直播讲解Java知识,欢迎大家前来学习哦。
1. DriverManager类
DriverManager类用来装载驱动程序,它所有的成员都是静态成员,所以在程序中无须对它进行实例化,直接通过类名就可以访问。DriverManager是JDBC 的管理层,作用于用户和驱动程序间加载驱动程序,DriverManager类跟踪可用的驱动程序,并在数据库和相应的驱动程序之间建立连接。
当DriverManager调用getConnection()方法来建立于数据库的链接时,DriverManager类首先从它已加载的驱动程序池中找到一个可以接受该数据库URL的驱动程序,然后请求该驱动程序使用相关的数据库URL去连接数据库。
通过调用方法Class.forName(),将显式的加载驱动程序类。forName的参数应该是 “公司名.数据库名.驱动程序名”。 当调用DriverManager.getConnection()发出连接请求时,DriverManager将检查每一个驱动程序,看它是否可以建立连接,getConnection()的原型如下:
Connection getConnection(String url.String usr,String password)
url表示指向数据库的URL,它的大致格式如下:
jdbc:(subprotocol):(subname)
其中subprotrol表示子协议,制定连接何种数据库或使用什么方式连接数据库,subname表示确定一个连接,可以使一个数据源名,也可以指向一个网上的数据库。
2.Connection类
Connection 类是指向一个数据库的连接,作用是管理指向数据库的连接,连接过程中包含所执行的sql语句和在该链接上返回的结果,一个应用程序可以与单个数据库有一个或多个连接,也可以与许多数据库有链接。在完成同数据库连接的所有任务之后关闭该链接。
常用的方法有
(1)close():用于关闭和数据库的链接,当一个Connection使用后,并没有被关闭,系统会将此连接保留一段时间,直到超时。使用方法如下:
conn.close()
(2)isClosed():判断一个连接是否已经关闭,返回一个布尔值,关闭时返回true。反之,返回false。
(3)commit():提交对数据库的更改,使其生效,只有在禁止自动提交时,(setAutoCommit(false))需要使用这个方法,否则对数据库的更改会自动提交到数据库。
(4)getAutoCommit():检测该链接是否处于自动提交状态,自动状态时为true反之false。
(5)setAutoCommit():设置操作是否自动提交到数据库,默认情况是true,即新建的链接处于自动提交模式。
(6)createStatement:用于创建一个Statement,Statement用于执行SQL语句,使用方法为:Statement stm=conn.createStatement();
Statement类Java.sql.Statement用于在基层连接上运行sql语句,并且访问结果。Connection接口提供了生成Statement的方法,一般情况下通过connection.createStatement方法就可以得到Statement对象的实例。
在使用中有三种Statment对象,分别是Statement,PrepareStatement和CallableStatement。
Statement对象用于执行不带参数的基本的sql语句,它的典型使用如下:
Connection conn=DriverManager.getConnection(……);
Statement stm=conn.createStatement();
ResultSet rs=stm.executeQuery("sql");
PrepareStatement对象是从Statement继承过来的。用于执行带或不带IN参数的预编译的SQL语句,它的典型使用如下:
Connection conn=DriverManager.getConnection(……);
pstm=conn.prepareStatement(" insert into person values(?,?,?,?)");
pstm.setInt(1,1);
pstm.setString(2,"jack");
pstm.setString(3,"boy");
pstm.setInt(4,15);
pstm.executeUpdate();
CallableStatement对象是PrepareStatement继承过来的用于执行对数据库存储过程的调用
ResultSet类
在Statement执行sql语句时,有时候会返回ResultSet结果集,ResultSet往往包含的是查询的结果集,并可以通过它的不同的方法提取出查询结果。此接口抽象了运行select语句的结果,提供了逐行访问结果的方法,通过它可以访问结果的不同字段,它通过next()方法将当前的指针向前移动一行,最初指针位于第一行之前,因此第一次条用next()方法,把指针置于第一行上,使它成为当前行,随着每次调用next()依次获得ResultSet行。