JDBC 是Java 数据库连接,即 Java DataBase Connectivity。JDBC 可让Java 通过程序操作关系型数据库,可基于驱动程序实现与数据库的连接与操作。JDBC 有统一的API ,提供一致的开发过程。其功能强大,执行效率高,可处理海量数据。

开发准备

在Navicat 中新建一个数据库,注意字符集 的选择,如下图所示:

然后运行 SQL 文件创建的表如下图:

接着在mysql 官网下载 mysql8驱动程序如下:

实际开发

1,加载并注册JDBC 驱动

在idea 中创建一个新工程,然后在工程名上右键,新建一个目录“lib”,用于添加所需依赖:

接着在idea中,执行 File -> Project Structure -> Modules -> Dependencies ,接着点击右边的 ”+“ ,添加mysql 驱动依赖,如下图所示:

然后就可以通过如下语句在程序中加载并注册JDBC 驱动:

Class.forName("com.mysql.cj.jdbc.Driver");

Class.forName 用于加载指定的JDBC 驱动类,其本质是通知JDBC 注册这个驱动类。

2,创建数据库连接

通过如下程序语句创建数据库连接:

Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/imooc?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai",
"root", "123456"
);
  • Connection 对象用于JDBC 与数据库的网络通信对象,所有数据库的操作都是建立在Connection 基础上。
  • DriverManager 用于注册 / 管理JDBC 驱动程序,DriveManager.getConnection(连接字符串,用户名,密码),其返回值Connection 对象,对应数据库的物理网络连接。

3,创建Statement 对象

通过如下程序语句实现Statement 对象的创建:

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from employee where dname='研发部'");

说明:ResultSet 表示结果集。

4,遍历查询结果

如下程序语句可以实现结果集的遍历查询:

while (rs.next()) {
Integer eno = rs.getInt(1); //eno
String ename = rs.getString("ename");
Float salary = rs.getFloat("salary");
String dname = rs.getString("dname");
System.out.println(dname + "-" + eno + "-" + ename + "-" + salary);
}

5,关闭连接,释放资源

关闭连接,这里我们可以直接通过语句:

 conn.close();

即可,因为底层的连接被关闭,其他的连接自然就被关闭了。

完整代码实现

package com.imooc.jdbc.sample;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement; /**
* 标准JDBC操作五步骤
*/
public class StandardJDBCSample {
public static void main(String[] args) {
Connection conn = null;
try {
//1. 加载并注册JDBC驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2. 创建数据库连接
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/imooc?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai",
"root", "123456"
);
//3. 创建Statement对象
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from employee where dname='研发部'");
//4. 遍历查询结果
while (rs.next()) {
Integer eno = rs.getInt(1); //eno
String ename = rs.getString("ename");
Float salary = rs.getFloat("salary");
String dname = rs.getString("dname");
System.out.println(dname + "-" + eno + "-" + ename + "-" + salary);
}
}catch(Exception e){
e.printStackTrace();
}finally {
try {
if (conn != null && conn.isClosed() == false) {
//5. 关闭连接,释放资源
conn.close();
}
}catch(Exception ex){
ex.printStackTrace();
}
} }
}

程序运行结果如下:

特别说明:以上程序只是为了说明应用 JDBC 开发的标准流程。

最新文章

  1. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数015,vector矢量
  2. Linux手动释放内存
  3. hdu 4070 福州赛区网络赛J 贪心 ***
  4. 条件判断语句if
  5. php配置文件php.ini 中文版
  6. 索引列上的统计 <第一篇>
  7. 团队 / Staff_VidaMiaTangoClub_新浪博客
  8. General Structure of Quartz.NET and How To Implement It
  9. gridview动态添加行(不用datatable实现)
  10. bash编程语法自我总结
  11. python中的PEP是什么?怎么理解?(转)
  12. Rsync + inotify 实现文件实时同步
  13. 使用jfreechart生成柱状图、折线图、和饼状图
  14. 【AtCoder】ARC083
  15. python XML文件解析:用xml.dom.minidom来解析xml文件
  16. 计蒜客---N的-2进制表示
  17. 实力封装:Unity打包AssetBundle(三)
  18. 3.java内存模型以及happens-before规则
  19. 如何解决quartz在集群下出现的资源抢夺现象
  20. [转]windows7远程桌面连接失败:发生身份验证错误。要求的函数不受支持

热门文章

  1. typora实现多平台发布文章
  2. SSH(四)控制层、业务层、dao层类的创建以及applicationcontext.xml和struts.xml配置
  3. [论文阅读] 颜色迁移-Linear Monge-Kantorovitch(MKL)
  4. 【JUC】交换器Exchanger详解
  5. intel Pin:动态二进制插桩的安装和使用,以及如何开发一个自己的Pintool
  6. 【HarmonyOS】ArkTS Native开发——使用 system函数创建文件
  7. Django 连接各数据库配置汇总(sqlite3,MySql,Oracle)
  8. 一份前端够用的 Linux 命令
  9. Jest如何有序地执行测试
  10. Java入门与进阶P-5.3+P-5.4