文章目录

  • JDBC概述
    • JDBC有什么用?
    • JDBC是什么?
    • JDBC API
  • JDBC的搭建和使用
    • 1 导入数据库驱动包
    • 2 加载数据库驱动
    • 3 建立数据库连接
    • 4 向数据库发送sql语句
      • Statement
      • PrepareStatement
    • 5 接收查询的结果
    • 6 关闭数据库连接通道

JDBC概述

JDBC有什么用?

1.jdbc是用来连接我们的java应用程序和数据库的,使用jdbc能够让我们通过java应用程序读取数据库中的数据,还能够进行数据的存储;

2.我们能够通过jdbc连接到不同的数据库, 比如Oracle,MySQL,sql server等.

JDBC是什么?

1.JDBC: Java DataBase Connectivity的简称, 即java数据库连接. 它是一种用于执行SQL语句的Java API, 可以为多种关系型数据库提供统一的访问, 由一组用Java语言编写的类和接口组成.

2.由于市面上的各种数据库底层各不相同, 而Java开发公司又不可能根据市面上的每一种数据库都设计其相应的数据库连接方式, 因此, java开发公司选择设计JDBC这样的类和接口组成的数据库连接方式, 由各自的数据库所属公司去实现自己数据库对应的JDBC功能.

总结一下, Java API中提供了操作数据库的标准接口, 最终由不同的数据库开发商实现这些标准接口来对数据库进行操作, 而程序员只需要学习使用标准规范即可.

JDBC API

JDBC API: 供程序员调用的类和接口, 集成在java.sql包中.

需要使用的几种类和接口:

DriverManager类:管理各种不同的JDBC连接;

Connection接口:与特定数据库的连接;

Statement接口: 执行sql

PrepardeStatement接口: 执行sql

ResultSet接口: 接收查询结果

JDBC的搭建和使用

说明一下, 我这里的开发工具使用的是IntelliJ IDEA 2020.2.1, mysql8 , 这里只是简单的说一下, 开发工具和mysql 版本不同也不太影响使用, 只是有几个小点需要注意, 大的部分是没什么问题的.

1 导入数据库驱动包

我这里使用的驱动包是

mysql-connector-java-8.0.16.jar

大家应该根据自己的数据库版本去选择相应的数据库驱动包.

导入数据库驱动包的操作如下:

1.在项目工程下创建lib目录, 将驱动包复制到lib目录下.

2.在File下找到项目结构(Prioject Structure)—>函数库(Libraries)—>点击+号,选择java—>选择到项目下面刚导入的jar包—>OK—>Apply

3.导入数据库驱动包完成.

2 加载数据库驱动

注册JDBC驱动程序: 这需要初识化驱动程序,这样就可以打开与数据库的通信信道.

方式一

利用反射机制加载Driver类,给的是类的地址

Class.forName("com.mysql.cj.jdbc.Driver"); //这是mysql8的方式
//利用反射机制加载Driver类
try {Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {e.printStackTrace();
}

方式二

使用DriverManager注册与给定的驱动程序.

DriverManger.registerDriver(new Driver());
//需要抛一个异常
try {DriverManager.registerDriver(new Driver());
} catch (SQLException throwables) {throwables.printStackTrace();
}

3 建立数据库连接

这里需要DriverManger.getConnection()方法来创建一个Connection对象, 它代表一个物理连接的数据库.

Connection connection = DriverManager.getConnection(URL,User,Passwd);
URL: jdbc:mysql://ip(127.0.0.1):端口(3306)/数据库名?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC?后面的都是参数,使用&符号连接,键=值&键=值characterEncoding=utf8 编码格式useSSL=false 安全连接,现在为falseserverTimezone=UTC 时区
User:用户名
Passwd:密码
try {String url = "jdbc:mysql://127.0.0.1:3306/test_db?characterEncoding=utf-8" +"&useSSL=false&serverTimezone=UTC";Connection connection = DriverManager.getConnection(url,"root","root");
} catch (SQLException throwables) {throwables.printStackTrace();
}

4 向数据库发送sql语句

这里主要就是通过java程序操纵数据库,需要学习两个发送sql语句的类,Statement和PrepareStatement.

Statement

获得Statement对象用于将sql语句发送到数据库

Statement st = connection.createStatement();

两个重要方法

executeUpdate(String sql);
用于执行ddl(结构定义)语句和dml(增,删,改)语句
执行ddl语句返回0,执行dml返回被操作的行数,为Int型executeQuery(String sql);
用于执行查询语句 返回一个ResultSet集合

注意

使用Statement类发送sql语句需要拼接字符串,拼接字符串的方法为:双引号双加号"+内容+",如果数据库本身的字段为字符串还需要再加上单引号,即'"+内容+"',事例如下
//获得Statement对象Statement st = connection.createStatement();//发送sql语句String name = "小明";String sex = "女";String age = "18";String deptId = "3";int res = st.executeUpdate("" +"insert into t_staff(s_name,s_sex,s_age,s_dept_id)" +"values('"+name+"','"+sex+"',"+age+","+deptId+")");System.out.println(res);//1,被修改了一行

PrepareStatement

获得PrepareStatement对象用于将sql语句发送到数据库

注意,prepareStatement中的参数位置使用占位符?
PrepareStatement ps = connection.PrepareStatement("sql语句,参数位置使用?");

两个重要方法

executeUpdate(String sql);
用于执行ddl(结构定义)语句和dml(增,删,改)语句
执行ddl语句返回0,执行dml返回被操作的行数,为Int型executeQuery(String sql);
用于执行查询语句 返回一个ResultSet集合

注意

为sql语句设置相应参数使用
ps.set相应类型(对应参数位置,参数)
的方法
//获得PrepareStatementPreparedStatement ps = connection.prepareStatement("insert into t_staff(s_name,s_sex,s_age,s_dept_id)" +"values(?,?,?,?)");String name = "小暗";String sex = "男";String age = "19";String deptId = "2";ps.setString(1,name);ps.setString(2,sex);ps.setString(3,age);ps.setString(4,deptId);//发送int res = ps.executeUpdate();System.out.println(res);

5 接收查询的结果

这里我们会使用ResultSet类;

PreparedStatement和Statement中的executeQuery()方法中会返回一个ResultSet对象,查询结果就封装在此对象中;

使用ResultSet中的next()方法获得下一行数据;

使用getXXX(String name)方法获得值;

一篇完整的查询语句代码奉上

import java.sql.*;public class Hello {public static void main(String[] args) {try {Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackTrace();}try {String url = "jdbc:mysql://127.0.0.1:3306/test_db?characterEncoding=utf-8" +"&useSSL=false&serverTimezone=UTC";Connection connection = DriverManager.getConnection(url, "root", "root");//获得PrepareStatementPreparedStatement ps = connection.prepareStatement("select * from t_staff where s_id=?");ps.setInt(1,3);//发送ResultSet res = ps.executeQuery();Test test = new Test();while(res.next()){test.setS_id(res.getInt("s_id"));test.setS_name(res.getString("s_name"));test.setS_sex(res.getString("s_sex"));test.setS_age(res.getInt("s_age"));test.setS_dept_id(res.getInt("s_dept_id"));test.setS_money(res.getInt("s_money"));}System.out.println(test.toString());//Test{s_id=3, s_name='虞姬', s_sex=女, s_age=29, s_dept_id=3, s_money=2800}//关闭连接ps.close();connection.close();} catch (SQLException throwables) {throwables.printStackTrace();}}
}
class Test{private int s_id;private String s_name;private String s_sex;private int s_age;private int s_dept_id;private int s_money;public void setS_id(int s_id) {this.s_id = s_id;}public void setS_name(String s_name) {this.s_name = s_name;}public void setS_sex(String s_sex) {this.s_sex = s_sex;}public void setS_age(int s_age) {this.s_age = s_age;}public void setS_dept_id(int s_dept_id) {this.s_dept_id = s_dept_id;}public void setS_money(int s_money) {this.s_money = s_money;}@Overridepublic String toString() {return "Test{" +"s_id=" + s_id +", s_name='" + s_name + '\'' +", s_sex=" + s_sex +", s_age=" + s_age +", s_dept_id=" + s_dept_id +", s_money=" + s_money +'}';}
}

6 关闭数据库连接通道

每次操作完成后关闭所有与数据库的连接通道

方法:close()

Java与数据库连接——JDBC(JDBC概念理解+JDBC搭建使用六步骤,作者君倾情奉上,爆赞!)相关推荐

  1. java day29【DBC基本概念 、快速入门 、对JDBC中各个接口和类详解】

    第一章   JDBC 1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库 * JDBC本质:其实是官方(sun公司)定义的一套操作所有关系 ...

  2. java的数据库连接编程(jdbc)技术_Java的数据库连接编程(JDBC)技术

    Java的数据库连接编程(JDBC)技术 Java的数据库连接编程(JDBC)技术 [本讲的知识要点]:JDBC.JDBC的工作原理,访问数据库的方法.Statement.PreparedStatem ...

  3. java jdbc 教程_java JDBC系列教程之JDBC类的简析与JDBC的基础操作

    什么是JDBC? 概念:JAVA Database Connectivity Javas数据库连接,Java语言操作数据库接口,然后由各个数据库厂商去实现这个接口,提供数据库驱动java包,我们可以使 ...

  4. 深入理解JDBC的超时设置 转

    转 http://www.admin10000.com/document/1360.html 恰当的JDBC超时设置能够有效地减少服务失效的时间.本文将对数据库的各种超时设置及其设置方法做介绍. 真实 ...

  5. jdbc mysql 源码_【JDBC系列】从源码角度理解JDBC和Mysql的预编译特性

    背景 最近因为工作调整的关系,都在和数据库打交道,增加了许多和JDBC亲密接触的机会,其实我们用的是Mybatis啦.知其然,知其所以然,是我们工程师童鞋们应该追求的事情,能够帮助你更好的理解这个技术 ...

  6. 【黑马Java笔记+踩坑】JavaWeb基础——JDBC

    目录 JDBC JDBC概述 JDBC概念 JDBC本质 JDBC好处 JDBC步骤 标准代码 编写代码步骤 获取数据库连接的各种方式 JDBC所有API 驱动管理类 DriverManager 数据 ...

  7. Java小白修炼手册--第四阶段--JDBC(Java Database Connectivity : Java访问数据库的解决方案 )

    目录 JDBC原理 JDBC标准 JDBC是什么 使用JDBC优点 JDBC接 口及数据库厂商实现 ​JDBC工作原理 Driver ( 驱动程序)接口及驱动类加载 ​Connection( 连接,关 ...

  8. java编程连接mysql_Java编程学习之JDBC连接MySQL

    JDBC连接MySQL 一.对JDBC连接数据库的步骤 1.加载数据库驱动 //加载驱动 Class.forName(driverClass) ---------------------------- ...

  9. Java JDBC篇1——初识JDBC

    Java JDBC篇1--初识JDBC Java DataBase Connectivity Java 数据库连接(Java语言操作数据库) 1.什么是JDBC 其实是官方定义的一套操作所有关系型数据 ...

最新文章

  1. 费马定理中值定理_数论-欧拉函数、欧拉定理
  2. 大话设计模式(十四 设计模式不能戏说!设计模式怎就不能戏说?)
  3. java中去掉Sprit(arg0)中正则表达式干扰
  4. WinSock I/O 模型 -- Select 模型
  5. linux中循环删除脚本,shell脚本:遍历删除
  6. C#基础知识1-深入理解值类型和引用类型
  7. gcn 图卷积神经网络_GCN图卷积网络入门详解
  8. MSIL实用指南-生成break和continue
  9. 有关linux的GPG签名验证错误的解决方法。
  10. mock数据和代码生成
  11. ref out 关键字用法与区别详解
  12. 消息映射与消息路由原理
  13. mysql如何只查询表中的前几条数据?多表查询前提了解
  14. java字符常量_字符常量 java
  15. 四大含金量高的算法证书考试
  16. 从0开发豆果美食小程序——项目搭建
  17. 城市与地区级联选择框的使用
  18. 真实案例解析OO理论与实践
  19. Filezilla+花生壳内网穿透实现外网可以访问 避坑指南
  20. 两个坐标系转换的变换矩阵

热门文章

  1. 石河子大学计算机系主任,魏长庆_石河子大学研究生导师信息
  2. 惠普服务器装Linux7系统,惠普DL580 G7服务器系统安装与环境部署
  3. 八百里加急$数据结构追加2组织权限设计
  4. 转:基于Turbo C2.0 的动画设计的例子
  5. 2021年最新全国30米土地利用数据(中科院二级分类)
  6. 语音算法:CE/MMI准则
  7. 几个小游戏(用win-tc可以编译)
  8. 学生计算机测评安排,计算机系学生综合素质测评办法(新).doc
  9. Qt对话框图片Debug下可显示,release下不可显示的解决办法
  10. 网络爬虫2:使用crawler4j爬取网络内容