JDBC学习笔记分享

JDBC产生的原因?

在解决实际问题中,我们编写的程序常常需要对数据库进行操作(如mysql、oracle等)。因为不同的数据库执行的细节不同,所以在java编程的时候对不同的数据库进行增删改查等操作时,需要编写不同的java代码。这样大大增加了编程的冗余度 和降低了代码的可用性。

综上,sun公司为了解决这个问题,编写了一套代码称为JDBC,提出了操作所有关系型数据库的规则。即程序员只要根据JDBC规则,就可以实现用一套代码,对多个不同的关系型数据库进行操作。

1.JDBC的概念

java数据库连接(Java DataBase Connectivity,JDBC)是java语言中用来规范客户端程序访问数据库的应用程序接口(api)。

(通俗来说:

JDBC是一套操作所有关系型数据库的规则,即接口;数据库对应的厂商去实现这套接口,提供数据库驱动jar包;程序员就可以使用这套规则(JDBC)编程,但是真正执行的代码是驱动jar包中的实现类。)

2.JDBC驱动程序

JDBC驱动程序在JDBC API中实现定义的接口,用于与数据库服务器执行交互。

比如:使用JDBC中定义的接口,可通过发送SQL或数据库指令,然后用java接受结果来建立数据库连接。实现与数据库进行交互。

3.JDBC API概述

JDBC API就是一个java API,可以访问任何类型表列数据,特别是存储在关系型数据中的数据,JDBC表示java数据库连接。

JDBC库中含有的API与数据库使用在:

连接数据库;

创建SQL语句;

执行SQL语句;

查看和修改数据库中的数据记录。

以下是一些常见的 JDBC API功能:

DriverManger:这个类是负责管理数据库驱动程序。驱动注册后会保存在DriverManger中的已注册列表中,后续处理就可以对该列表操作。使用通信自协议将来自java应用程序的连接请求与适当的数据库驱动程序匹配,负责加载各种不同驱动程序(Driver),并根据不同的请求,向调用者返回对应的数据库连接。

Driver:这是一个接口,用于处理与数据库服务器的通信。驱动程序,会将自身加载到Drivermanger中,处理相应的请求并返回相应的数据库连接(Connection)。

Connection:这个接口负责数据库连接,并与数据库通讯,SQL执行以及事务处理都是在这个特定的Connection环境中实现的。可产生执行sql语句的Statement对象,具有连接数据库的所有方法。注意:与数据库的所有通信只能通过connection对象。

Statement:这个接口创建对象用以执行SQL查询和更新针对静态Sql语句和单次执行,

PrepareStatement:用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)

ResultSet:在使用Statement对象执行SQL语句后,这些对象保存从数据库检索的数据。它作为一个迭代器并可移动ResultSet对象查询的数据。

CallabelStatement:用以调用数据库中的存储过程。

SqlException:表示在数据库连接的建立和关闭和SQL语句执行过程中发生了错误。

4.JDBC的一般步骤总结:

(1)导入对应的关系型数据库驱动包;

(2)注册驱动;

(3)创建对应的sql语句;

(4)创建sql 执行对象;

(5)执行sql语句;

(6)处理返回结果;

(7)释放变量;

代码展示:

package JDBC_statement;

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

/*JDBC概念:
*   Java数据库连接(JDBC)是java语言中用来规范客户端程序和访问数据库的应用接口,提供诸如查询和更新数据库中的数据方法。
*   通常说的JDBC是一种用于执行SQL语句的java API,支持为多种关系型数据库提供同意访问,JDBC是由一组
* 用java语言编写的类和接口组成的。
*   从根本上说,JDBC是一个规范,他提供了一整套接口,允许以一种可移植的访问底层
* 数据库API。java可以结合JDBC来编写不同类型的可执行文件
*/


// JDBC快速入门代码展示
public class JDBC_day1 {
    public static void main(String[] args) throws Exception {
    //注册驱动
    Class.forName("com.mysql.jdbc.Driver"); //MYSQL55以上可直接省略
    //2.获取连接
    String url="jdbc:mysql://localhost:3306/test";
    String username="root"; //我电脑中为mysql数据库环境的用户名为“root”
    String password="1234"; //我电脑中mysql数据库环境的密码为“1234”
    //前面已经完成了注册驱动,根据所学知识知道,注册完的的驱动保存在Drivermanger中,在调用
     //Drivermanger中的静态方法getConnection建立数据库连接。
    Connection conn=DriverManager.getConnection(url,username,password);
    //4、创建sql执行对象
     Statement stamt = conn.createStatement();
     //定义sql语句
     String sql="select * from `student`;";
     //执行sql语句
    ResultSet re =stamt.executeQuery(sql);
    //处理结果
    while(re.next()){
        System.out.println(re.getString("name")+' '+ re.getString("age"));
    }
    //释放资源
    stamt.close();
    conn.close();
    }
}

数据库中对应的数据:

在navicat中查看数据库中的数据:

java代码运行截图:

以上便完成了JDBC的快速入门。

接下来是JDBC API的功能简介:

1.DriverManger 驱动管理对象(管理驱动、获取连接对象等)

(1)注册驱动(第一步):

我们在注册驱动时会调用定义好的函数:static void registerDriver(Driver driver)。我们只需要知道有这个步骤就行。因为在实际编程过程中我们注册驱动(举例子是一个mysql驱动)都是利用java反射机制,使用:Class.forName("com.mysql.jdbc.Driver")语句完成。

(2)获取数据库连接:

我们在获取数据库连接对象时会调用 函数:static Connection getConnection(String url,String user,String password)。这个函数的返回值是一个Connection数据库连接对象。其中函数对应的参数分别为:

url:数据库连接路径。(jdbc:mysql://ip地址(域名):端口号/数据库名称)

user:用户名

password:密码

2.Connection数据库连接对象

(1)获取执行者对象:

执行者对象分为普通执行者对象和预编译执行者对象。

获取普通执行者对象:Statement createStatement();

获取预编译执行者对象:PreparedStatement prepareStatement(String sql);

(2)管理事务

开启事务:setAutoCommit(boolean autoCommit);参数为false,则开启事务;提交事务:commit();回滚事务:rollback();

(3)释放资源

立即将数据库连接对象释放:void close();

3.Statement执行sql语句的对象

(1)执行DML语句:int executeUpdate(String sql);

返回值:返回影响的行数

参数sql:可以执行insert、update、delete语句。

(2)执行DQL语句:ResultSet executeQuery(String sql);

返回值ResultSet:封装查询的结果。

参数sql:可以执行select语句

4.RestultSet执行sql语句的对象

(1)判断结果集中是否含有数据:boolean next();

有数据返回true,并将索引行下移动一行,没有数据返回false。

(2)获取结果集中数据的语法格式:结果的数据类型 get结果的数据类型(“列名”)

(3)释放资源:立即将结果集对象释放 void close();

  • 28
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值