JDBC是什么?
在java web中,数据库是不可缺少的一部分,而数据库的连接通常使用java完成,因此便有了JDBC技术(java database connectivity 数据库连接技术)。从此,数据库与网页之间便有了联系,变得密不可分。
这篇文章先从基础的开始,先不涉及网页,从一个Java应用的JDBC方法来入门,会更好地看清JDBC的操作,那就开始吧!
JDBC的编写流程
简介
通常来说JDBC的操作一般分为以下几步:
1.导入需要操作的数据库jdbc驱动包和创建数据库
2.将jdbc包加载至JVM中
3.通过DriverManager类中getConnection方法获取到对应数据库连接对象
4.编写需要操作的sql语句
5.通过连接对象创建编译对象
6.接受并处理返回的结果
7.释放资源
看到上面的这些步骤,从来没有接触过JDBC的小伙伴可能就懵了,这些都是什么呀?别怕!其实JBDC是非常死板的别写格式,接下来博主就一步一步地来讲解这些步骤。
具体实现
1.第一步:导入需要操作的数据库jdbc驱动包和创建数据库
主要的数据库主要有SQL Server、MySQL、Oracle这样三种,需要去找寻对应的jdbc驱动jar包。
方法:推荐前往Maven仓库寻找,里面各个版本主流的ar包都能够找到,较为方便。链接为Maven中央仓库
博主使用的是MySQL8,所以接下来的演示就以此来进行。
输入后点击搜索。
点击第一个链接
便可以在下面的驱动包列表中选择自己需要的jar包了。
JDBC驱动包必须要和自己使用的数据库版本对应,否则会报错。
这里博主由于使用的是MySQL8,选择8.0.x中的版本
然后点击进入选择下载
下载完成就要把jar包导入项目啦!
博主使用的是IntelliJ IDEA,如果有使用eclipse的小伙伴,操作流程是一样的,也可以参考。
首先先创建一个新的Java项目,不需要勾选任何框架,直接Next
一路Next,起好项目名称,点击Finish这个项目就算创建好啦!
接下来找到刚刚下载的jar包,黏贴到项目的lib目录下(如果没有lib目录,就自己创建一个文件夹,命名为lib)
最后一步,右击jar包选择Add as Library,然后JDBC的准备工作中Java的部分就算完成啦!
博主就不多赘述建立数据库中建表的过程了,因为这是另外一项技术了,和JDBC关系不大,这里直接用博主已经建立好的数据库中的表来讲解。这是一张用户表,接下来的编程演示就基于这张表
2.第二步:代码实现
a.查询类功能
import java.sql.*;
public class JDBC {
public static void main(String[] args) {
//声明变量
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
//将jdbc包加载至JVM中
Class.forName("com.mysql.cj.jdbc.Driver");
//声明连接数据库的url(本处使用的是本地的MySQL数据库)
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC", "root", "******");
//编写需要操作的sql语句
String sql = "select * from user";
//通过连接对象创建编译对象
preparedStatement = connection.prepareStatement(sql);
//向编译对象发出sql指令
resultSet = preparedStatement.executeQuery();
//接受并处理返回的结果
while (resultSet.next()) {
System.out.println(resultSet.getInt("id")+ " " + resultSet.getString("username") + " " + resultSet.getString("password"));
}
}catch(Exception e){
e.printStackTrace();
}finally {
//释放资源
if(resultSet!=null){
try{
resultSet.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(preparedStatement!=null){
try{
preparedStatement.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(connection!=null){
try{
connection.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
以上的代码可以总结为以下的模板,需要修改的地方博主帮大家用高亮打出,方便小伙伴阅读
import java.sql.*;
public class JDBC {
public static void main(String[] args) {
//声明变量
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;try {
//将jdbc包加载至JVM中
Class.forName(“驱动类名”);
//声明连接数据库的url(本处使用的是本地的MySQL数据库)
connection = DriverManager.getConnection(“需连接的数据库url”,“用户名”,“密码”);
//编写需要操作的sql语句
String sql = “编写需要操作的sql语句”;
//通过连接对象创建编译对象
preparedStatement = connection.prepareStatement(sql);
//向编译对象发出sql指令
resultSet = preparedStatement.executeQuery();
//接受并处理返回的结果
while (resultSet.next()) {
System.out.println(输出要输出的值);
}
}catch(Exception e){
e.printStackTrace();
}finally {
//释放资源
if(resultSet!=null){
try{
resultSet.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(preparedStatement!=null){
try{
preparedStatement.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(connection!=null){
try{
connection.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
b.插入修改类功能
import java.sql.*;
public class JDBC {
public static void main(String[] args) {
//声明变量
Connection connection = null;
Statement statement = null;
try {
//将jdbc包加载至JVM中
Class.forName("com.mysql.cj.jdbc.Driver");
//声明连接数据库的url(本处使用的是本地的MySQL数据库)
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC", "root", "******");
//编写需要操作的sql语句
String sql = "insert into user(id,username,password) values(6,'admin','admin')";
//通过连接对象创建编译对象
statement = connection.createStatement();
//向编译对象发出sql指令
statement.executeUpdate(sql);
}catch(Exception e){
e.printStackTrace();
}finally {
//释放资源
if(statement!=null){
try{
statement.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(connection!=null){
try{
connection.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
}
以上的代码可以总结为以下的模板,需要修改的地方博主帮大家用高亮打出,方便小伙伴阅读
import java.sql.*;
public class JDBC {
public static void main(String[] args) {
//声明变量
Connection connection = null;
Statement statement = null;
try {
//将jdbc包加载至JVM中
Class.forName(“驱动类名”);
//声明连接数据库的url(本处使用的是本地的MySQL数据库)
connection = DriverManager.getConnection(“需连接的数据库url”,“用户名”,“密码”);
//编写需要操作的sql语句
String sql = “编写需要操作的sql语句”;
//通过连接对象创建编译对象
statement = connection.createStatement();
//向编译对象发出sql指令
statement.executeUpdate(sql);
}catch(Exception e){
e.printStackTrace();
}finally {
//释放资源
if(statement!=null){
try{
statement.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(connection!=null){
try{
connection.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
}
这样一看,是不是发现每次编写JDBC只有这么一点点地方需要编写呢,其他的都是固定的模板,套用就完事了!
所以说,JDBC并不难,准备上手的小伙伴也不要害怕呢,多多练习就OK啦!
附加资料
三种主流关系型数据库的驱动包名称和驱动类名
数据库 | 驱动类名 | url |
MySQL | com.mysql.jdbc.Driver (MySQL5及以下) com.mysql.cj.jdbc.Driver(MySQL6及以上) | jdbc:mysql://IP地址:端口号(默认3306)/数据库名字 |
SQL Sever | com.microsoft.sqlserver.jdbc.SQLServerDriver | jdbc:microsoft:sqlserver://IP地址:端口号(默认1433);DatabaseName=数据库名 |
Oracle | oracle.jdbc.driver.OracleDriver | dbc:oracle:thin:@IP地址:端口号(默认1521):数据库名 |
结语
这篇博客主要介绍了JDBC技术的实现,这项技术牵涉到了数据库中的sql查询语言以及编写代码使用的java语言,可能有的小伙伴想学java却没有学过数据库方面的相关知识,所以博主之后会更新关于数据库sql查询语句的讲解,如果说这篇文章有让你学到一定的知识的话,不妨点个赞和关注,让博主能够看到,如果讲解中有什么错误和疏忽,也劳烦在评论中指出或提问,博主会第一时间进行更新和答复,谢谢!