JDBC详细介绍

article/2025/8/24 5:49:00
  1. jdbc的概念

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

2.jdbc的作用

JDBC为Java程序操作不同的数据库提供了统一的接口,避免了细节。

JDBC可以链接任何提供了JDBC的驱动程序的数据库系统,从而完成对数据库的任何操作。

3.jdbc数据库连接步骤

  1. 导入jar包 MySQL8.0

注意!!!!如果是maven项目就更简单了直接在pom配置文件中添加依赖

2.注册驱动

Class.forName("com.mysql.jdbc.Driver"); //5.1-5.6的版本应用 5.7也可以应用
Class.forName("com.mysql.cj.jdbc.Driver") //mysql 8版本应用

3.获取连接 , 3306 为数据库端口,root 123456 分别为数据库账号和密码

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", "root", "12345");

4.获取执行者对象

Statement stat = con.createStatement();

5.执行sql语句,并接收返回结果

String sql = "SELECT * FROM user";
ResultSet rs = stat.executeQuery(sql);

6.处理结果

while(rs.next()) {System.out.println(rs.getInt("id") + "\t" + rs.getString("name"));
}

7.释放资源

con.close();
stat.close();
rs.close();

JDBC各个功能类

1.DriverManager

  • DriverManager:驱动管理对象

  • 注册驱动(告诉程序该使用哪一个数据库驱动)

  • static void registerDriver(Driver driver):注册与给定的驱动程序 DriverManager

  • 写代码使用:Class.forName("com.mysql.jdbc.Driver");

  • 通过查看源码发现:在com.mysql.jdbc.Driver类中存在静态代码块

static {try {java.sql.DriverManager.registerDriver(new Driver());} catch (SQLException E) {throw new RuntimeException("Can't register driver!");}
}
  • 注意:mysql5之后的驱动jar包可以省略注册驱动的步骤。在jar包中,存在一个java.sql.Driver配置文件,文件中指定了com.mysql.jdbc.Driver

  • 获取数据库连接(获取到数据库的连接并返回连接对象)

  • static Connection getConnection(String url, String user, String password);

  • 返回值:Connection数据库连接对象

  • 参数

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

  • user:用户名

  • password:密码

2.Connection

  • Connection:数据库连接对象

  • 获取执行者对象

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

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

  • 管理事务

  • 开启事务:setAutoCommit(boolean autoCommit); 参数为false,则开启事务。

  • 提交事务:commit();

  • 回滚事务:rollback();

  • 释放资源

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

3.Statement

  • Statement:执行sql语句的对象

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

  • 返回值int:返回影响的行数。

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

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

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

  • 参数sql:可以执行select语句。

  • 执行DDL语句:boolean execute(String sql)

  • 返回值boolean: 返回true 表示执行的是查询语句,false 表示执行了create

  • 参数sql:可以执行create drop alter

  • 执行命令语句:addBatch(String sql)

  • 无返回值

  • 参数sql:加入一个sql语句命令

  • 批量插入语句:executeBatch()

  • 返回值:int[]

  • 操 作:结合addBatch一起使用

  • 释放资源

  • 立即将执行者对象释放:void close();

4.ResultSet

  • ResultSet:结果集对象

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

  • 有数据返回true,并将索引向下移动一行

  • 没有数据返回false

  • 获取结果集中的数据:XXX getXxx("列名");

  • XXX代表数据类型(要获取某列数据,这一列的数据类型)

  • 例如:String getString("name"); int getInt("age");

  • 释放资源

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

JDBC工具类

1.工具类的抽取

  • 配置文件(在src下创建config.properties)

driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db1
username=root
password=12345
  • 工具类

/*JDBC工具类*/
public class JDBCUtils {//1.私有构造方法private JDBCUtils(){};//2.声明配置信息变量private static String driverClass;private static String url;private static String username;private static String password;private static Connection con;//3.静态代码块中实现加载配置文件和注册驱动static{try{//通过类加载器返回配置文件的字节流InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("config.properties");//创建Properties集合,加载流对象的信息Properties prop = new Properties();prop.load(is);//获取信息为变量赋值driverClass = prop.getProperty("driverClass");url = prop.getProperty("url");username = prop.getProperty("username");password = prop.getProperty("password");//注册驱动Class.forName(driverClass);} catch (Exception e) {e.printStackTrace();}}//4.获取数据库连接的方法public static Connection getConnection() {try {con = DriverManager.getConnection(url,username,password);} catch (SQLException e) {e.printStackTrace();}return con;}//5.释放资源的方法public static void close(Connection con, Statement stat, ResultSet rs) {if(con != null) {try {con.close();} catch (SQLException e) {e.printStackTrace();}}if(stat != null) {try {stat.close();} catch (SQLException e) {e.printStackTrace();}}if(rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}}public static void close(Connection con, Statement stat) {close(con,stat,null);}
}
  1. PreparedStatement

  • 预编译sql语句的执行者对象。在执行sql语句之前,将sql语句进行提前编译。明确sql语句的格式后,就不会改变了。剩余的内容都会认为是参数!参数使用?作为占位符

  • 为参数赋值的方法:setXxx(参数1,参数2);

  • 参数1:?的位置编号(编号从1开始)

  • 参数2:?的实际参数

  • 执行sql语句的方法

  • 执行insert、update、delete语句:int executeUpdate();

  • 执行select语句:ResultSet executeQuery();


http://chatgpt.dhexx.cn/article/qH9vF0b8.shtml

相关文章

JDBC详细全解(示例超多)

文章目录 JDBCJDBC的概念1.jdbc的概念2.jdbc的本质 JDBC快速入门JDBC功能详解1、DriverManager驱动管理对象2、Connection数据库连接对象3、Statement执行sql语句的对象4、ResultSet结果集对象 JDBC案例案例需求数据准备1、数据库数据准备2、创建student类 功能实现1、查询所有…

JDBC介绍

1 JDBC简介 概念:JDBC(Java DataBase Connectivity) :Java数据库连接技术:具体讲就是通过Java连接广泛的数据库,并对表中数据执行增、删、改、查等操作的技术。如图所示: 此前我们学习过SQL后,可以通过 Na…

JDBC 连接 MySQL

哈喽~大家好,这次我们来看看 JDBC 如何 连接 MySQL. 目录 一、开头 二、介绍 1、JDBC 的概念 2、JDBC 的功能 3、JDBC 的常用接口和类 三、数据库的创建(MySQL) 1、连接 MySQL (1)、注册驱动 (2)、获取连接 (3)、获取执行者连接 …

BindingNavigator 类 - MSDN

.NET Framework 2.0 其他版本 5(共 9)对本文的评价是有帮助 - 评价此主题 注意:此类在 .NET Framework 2.0 版中是新增的。 表示窗体上绑定到数据的控件的导航和操作用户界面 (UI)。 命名空间:System.Windows.Forms 程序集:System.Windows.Fo…

Android的一个BindView工具的实现

对于Android已经有很多Bind View的工具了,大多都是使用了反射和注解的方法。那么如何实现一个简易的代码生成工具呢?其实不难,只要会写代码都可以试试。这些天,我试了一下,并将它做成了工具。代码如下: pa…

setNavigationBarTitle

wx.setNavigationBarTitle就是用来改红框框里面的内容滴 在项目开发中经常用到 使用的场景就包括了多个地方用同一套页面的时候 wx.setNavigationBarTitle({title: "我的店铺",});

安卓ViewBinding详解

背景 之前我们通过Kotlin Android Extensions来访问布局文件中的元素,但是这个现在被废弃了,原因如下: 空安全:res下的任何id都可以被访问,有可能因访问了非当前Layout下的id而出错兼容性:只能在kotlin中…

Winform中用bindingNavigator和bingdingSource实现分页

BindingNavigator控件介绍 可以使用BindingNavigator控件来创建标准化的方法,以便用户搜索和更改 Windows 窗体上的数据。BindingNavigator 控件由包含一系列 ToolStripItem 对象的ToolStrip组成,可以实现:添加数据,删除数据&…

DataGridView使用bindingNavigator实现分页功能(应用存储过程)

想法是这样的:使用bindingNavigator存储过程实现DataGridView的分页功能,其中包含简单的查询。 存储过程如下: --创建分页查询存储过程(含输出参数,输入参数(含搜索功能)) use HotelDB if exists(select *…

配置bind

安装bind yum install bind-* service firewalld stop #暂时关闭防火墙 vim /etc/named.conf Linsten-on port 53 {any;}; 监听除了自己以外的ip Allow-query{any;} 允许任意的ip来访问 配置正向解析 /etc/named.rfc1912.zones #直接在底部添加 zone "s…

Android dataBinding和viewBinding的混淆配置

在最近重构过的项目中有使用dataBinding或viewBinding,在调试的时候没有问题,但是在混淆过后出现了崩溃: 我们知道viewbinding的初始化是ActivityMainBinding.inflate() 而我是通过反射去初始化viewbinding的 很明显,布局所生成的…

viewBinding和@BindView的用法的简单使用

viewBinding 1.module下的build.gradle,在闭包android{ }里面添加 viewBinding {enabled true} 2.使用方法 用视图绑定功能后,系统会为该模块中包含的每个 XML 布局文件生成一个绑定类。这个类的类名是以xml布局文件名去掉下换线后,单词…

BindingNavigator控件

WinForm之中BindingNavigator控件的使用 在微软WinForm中,BindingNavigator控件主要用来绑定数据。可以将一个数据集合与该控件绑定,以进行数据 联动的显示效果。如图下图所示: 那么,下面我们就来用BindingNavigator控件做一下上图…

WinForm控件之【BindingNavigator】【DataSet】【BindingSource】【DataGridView】

基本介绍 数据类控件,数据加载绑定便捷应用相当广泛,具体看例子自行扩展吧; 常设置属性 BindingNavigator--BindingSource:数据来源,绑定后默认项会根据相应的操作按钮执行操作; BindingNavigator--Items&a…

WinForm之中BindingNavigator控件的使用

在微软WinForm中,BindingNavigator控件主要用来绑定数据。可以将一个数据集合与该控件绑定,以进行数据联动的显示效果。如图下图所示: 那么,下面我们就来用BindingNavigator控件做一下上图所示的效果。 分析:该案例以B…

winform控件之BindingNavigator

BindingNavigator控件可以为我们绑定的数据提供一个导航的功能,默认的工具是这个样子的,我们可以根据需求再增加功能 1.BindingNavigator用法 1.1界面布局 界面布局如下 一个BindingNavigator名为bindingNavigator1 一个DataGridView名为DataGridVie…

C#开发之——ToolStrip(10.22)

一 概述 在C# WinForm开发中添加工具栏(ToolStrip)和添加菜单栏类似&#xff0c;在工具箱中将ToolStrip控件直接拖到Windows窗体中即可 <!--more--> 二 ToolStrip操作 从工具箱拖拽ToolStrip控件到Windows窗体后&#xff0c;如下图所示(在添加了ToolStrip控件之后&…

C#winform窗体控件之toolStrip

C#winform窗体控件之toolStrip 在做窗体时我们可能需要一个工具栏&#xff0c;那这时最简单的方法就是添加一个toolStrip控件。 如何完成一个上图的工具栏呢? 首先&#xff0c;需要添加一个toolStrip控件&#xff0c;然后点击控件上的添加按钮&#xff0c;添加你需要的控件&…

C#如何让ToolStrip工具栏按钮分别靠左和靠右对齐分布

ToolStrip工具栏按钮默认靠左对齐&#xff0c;如何让ToolStrip工具栏按钮分别靠左和靠右对齐分布&#xff1f;&#xff01; 第一步&#xff0c;选择要靠右对齐的工具栏上的按钮&#xff0c;属性&#xff0c;设置“Alignment: Right” 即&#xff0c;this.toolStripSysInfoBut…

ToolStrip

&#xfeff;&#xfeff; 效果实现&#xff1a; 1.添加ToolStrip控件 2.点击ToolStrip控件添加button,设置Imagine,对ToolStripButton的Text进行设置,DisplayStyle设置为ImagineAndText即可。