博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用JDBC访问MySQL数据库
阅读量:4094 次
发布时间:2019-05-25

本文共 2518 字,大约阅读时间需要 8 分钟。

一、什么是JDBC?什么是数据库驱动(程序)?

JDBC全称Java Database Connectivity,即Java数据库连接,它定义了Java语言访问各种数据库的统一标准(API)。这么说可能还是有些抽象。设想一种情况,假如没有JDBC,我们如何访问各种数据库呢?由于各个企业根据自身条件和需求,选择的数据库可能是多种多样的(MySQL、Oracle,SQL Server等),并且不幸的是,想要操作这些不同的数据库,我们势必要编写不同的数据库访问代码。显然这会带来很多的不便,例如更换底层数据库实现的操作会渗透到数据访问层的代码。

在这个背景下,JDBC就推出了。JDBC是Sun公司制定的一套统一的数据库访问API。也就是不论你数据库如何选择、更换,我都可以用同一套API来访问,这就屏蔽了底层的数据库实现。然而,注意JDBC作为一个标准,它提供的仅仅是接口。它只会告诉你应该做什么,但是不会告诉你怎么做。

那么数据访问层的差异化体现在哪里呢?那就是数据库驱动程序了。数据库驱动程序和数据库厂商提供的而不是Sun公司提供的。举个栗子,MySQL数据库,为了推广其产品,兼容到各种高级语言。那么我会根据Sun公司提供的JDBC标准,编写具体的实现,这个具体的实现就是数据库驱动程序了。当然为了兼容其他的语言,MySQL必须发布多款针对不同语言的数据库驱动程序。

其实只要记得JDBC是Sun公司制定的,而数据库驱动程序是数据库厂商提供的就能明白其中关系了。接下来看看JDBC和数据库驱动程序在应用中的定位:

容易知道,JDBC相当于抽象了一层,屏蔽了底层具体的数据库实现。

二、一个简单的JDBC示例

a.下载和安装MySQL数据库,这个网上有很多教程,按照那个来就行了。

b.建立数据库和表。可以通过一些可视化工具或是命令行进行,同样参见自行百度。

c.编写数据访问代码,注意我这里还没有引入MySQL数据库驱动程序的jar包。也就是我使用的是JDBC的标准API,都是依赖于抽象,还没有引入具体的实现。

import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;/** * Created by wwt on 2016/10/26. */public class JDBC {    public static void main(String args[]){        //1.加载数据库驱动        try {            Class.forName("com.mysql.jdbc.Driver");        } catch (ClassNotFoundException e) {            e.printStackTrace();        }        try(            //2.获取Connection对象            Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/你的数据库名","你的用户名","你的密码");            //3.获取Statement对象            Statement statement=connection.createStatement();        ){            //4.执行sql语句,自行根据需要编写            ResultSet resultSet=statement.executeQuery("select * from students");            //5.操作结果集            while(resultSet.next()){                System.out.printf("%s,%s,%s,%s,%s\n",                                    resultSet.getInt(1), resultSet.getString(2), resultSet.getInt(3), resultSet.getString(4), resultSet.getString(5));            }        }catch(Exception e){            e.printStackTrace();        }    }}
d.尝试运行,会发现跑步起来。这是因为你还没有引入MySQL的JDBC驱动程序。这时你利用反射是拿不到具体的类的。因此这一步我们要做的就是引入jar包。

URL:

从这张图我们也可以看出,数据库驱动的确是数据库厂商根据不同语言的标准开发的。点击Download下载到本地解压。添加到项目中。

e.重新运行,能够正常访问数据库。

小结一下JDBC的使用流程:

  • 加载数据库驱动程序
  • 通过DriverManager获取Connection对象
  • 获取Statement对象
  • 执行SQL语句
  • 操作结果集ResultSet
  • 关闭资源,示例中采用了自动资源的try语句(ResultSet、Statement、Connection)

三、使用JDBC的局限

虽然我们标准化了Java访问数据库的流程和方法,其带来的价值也是立竿见影的,但是JDBC依旧存在一定的局限性。体现在:
1.在应用程序中可能出现大量重复的代码。凡是需要进行数据库访问操作的地方,都需要按照上面的6个步骤进行数据库的访问。
2.数据库访问的代码和业务代码混杂在一起,难以维护。
3.会抛出诸如SQLException这种checked异常,这种异常是无法编译器忽略的。程序员必须进行捕获和处理。问题在于时间成本和程序员不一定清楚如何去处理某种异常。
4....待补充

你可能感兴趣的文章
JavaScript入门笔记:全选功能的实现
查看>>
程序设计方法概述:从面相对象到面向功能到面向对象
查看>>
数据库事务
查看>>
JavaScript基础1:JavaScript 错误 - Throw、Try 和 Catch
查看>>
SQL基础总结——20150730
查看>>
SQL join
查看>>
JavaScript实现页面无刷新让时间走动
查看>>
CSS实例:Tab选项卡效果
查看>>
前端设计之特效表单
查看>>
前端设计之CSS布局:上中下三栏自适应高度CSS布局
查看>>
Java的时间操作玩法实例若干
查看>>
JavaScript:时间日期格式验证大全
查看>>
pinyin4j:拼音与汉字的转换实例
查看>>
XML工具代码:SAX从String字符串XML内获取指定节点或属性的值
查看>>
时间日期:获取两个日期相差几天
查看>>
责任链模式 Chain of Responsibility
查看>>
高并发与大数据解决方案概述
查看>>
解决SimpleDateFormat线程安全问题NumberFormatException: multiple points
查看>>
MySQL数据库存储引擎简介
查看>>
处理Maven本地仓库.lastUpdated文件
查看>>