java——jdbc编程

article/2025/8/24 4:00:50

文章目录

    • JDBC的概念
    • JDBC的常用API
    • JDBC示例代码
    • PreparedStatement
    • CallableStatement

JDBC(Java Database Connectivity)是Java的一种数据库访问标准,它提供了一套API,使得我们可以通过Java程序来访问和操作各种关系型数据库。

在这里插入图片描述

下面我们详细介绍JDBC编程,包括JDBC的概念、JDBC的常用API以及示例代码。

JDBC的概念

JDBC是Java的一种数据库访问标准,它提供了一套API,使用这些API可以让Java程序连接各种关系型数据库,并且进行数据的增、删、改、查等操作。

JDBC的架构分为两部分:JDBC API和JDBC Driver。JDBC API定义了Java程序与数据库之间的接口规范;JDBC Driver则负责将Java程序中的JDBC API调用转换成特定数据库的协议,实现与特定数据库的通信。

在JDBC编程中,开发者需要关注以下几个核心概念:

  • Connection(连接对象):表示与数据库的连接。
  • Statement(语句对象):表示执行SQL语句的对象。
  • ResultSet(结果集对象):表示查询结果集的对象。
  • PreparedStatement(预编译语句对象):表示一个预编译的SQL语句对象,可以有效地防止SQL注入攻击。
  • CallableStatement(存储过程对象):表示调用存储过程的对象。

JDBC的常用API

  1. 加载驱动程序

在使用JDBC之前,需要先加载相应的数据库驱动程序。可以通过Class.forName()方法实现。

Class.forName("com.mysql.jdbc.Driver");
  1. 建立连接

使用DriverManager.getConnection()方法建立与数据库的连接。

String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
  1. 创建Statement对象

通过Connection对象创建Statement对象。

Statement stmt = conn.createStatement();
  1. 执行SQL语句

通过Statement对象执行SQL语句。

String sql = "SELECT * FROM users";
ResultSet rs = stmt.executeQuery(sql); // 查询操作
  1. 处理查询结果

对于查询操作,可以通过ResultSet对象获取查询结果集中的数据。

while (rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");int age = rs.getInt("age");System.out.println("id=" + id + ", name=" + name + ", age=" + age);
}
  1. 关闭资源

在使用完JDBC资源后,需要及时关闭它们,以释放内存和资源。

if (rs != null) {rs.close();
}
if (stmt != null) {stmt.close();
}
if (conn != null) {conn.close();
}

JDBC示例代码

下面是一个使用JDBC进行简单查询的示例代码。

import java.sql.*;public class JdbcDemo {public static void main(String[] args) {try {// 加载MySQL驱动程序Class.forName("com.mysql.jdbc.Driver");// 建立与MySQL的连接String url = "jdbc:mysql://localhost:3306/test";String user = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, user, password);// 创建Statement对象Statement stmt = conn.createStatement();// 执行查询操作String sql = "SELECT * FROM users WHERE age > 18";ResultSet rs = stmt.executeQuery(sql);// 处理查询结果while (rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");int age = rs.getInt("age");System.out.println("id=" + id + ", name=" + name + ", age=" + age);}// 关闭资源if (rs != null) {rs.close();}if (stmt != null) {stmt.close();}if (conn != null) {conn.close();}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLExceptione) {e.printStackTrace();}}
}

上面的代码使用了JDBC连接到MySQL数据库,并执行了一个查询操作,将年龄大于18岁的用户信息打印出来。在代码中使用了try-catch语句块捕获了异常,并在finally块中关闭了资源。

需要注意的是,在实际开发中,建议使用连接池来管理数据库连接,以提高性能和可靠性。常用的连接池有Apache Commons DBCP和C3P0等。

下面再来介绍一些JDBC的高级特性。

PreparedStatement

使用PreparedStatement可以有效地防止SQL注入攻击,并提升SQL语句执行效率。它是Statement的一个子类,用于预编译SQL语句,然后在执行时只需要传递参数即可。

下面是一个使用PreparedStatement执行插入操作的示例代码。

import java.sql.*;
import org.apache.commons.dbcp2.BasicDataSource;public class JdbcDemo {public static void main(String[] args) {BasicDataSource dataSource = new BasicDataSource();// 设置数据库连接信息dataSource.setDriverClassName("com.mysql.jdbc.Driver");dataSource.setUrl("jdbc:mysql://localhost:3306/test");dataSource.setUsername("root");dataSource.setPassword("123456");try {// 从连接池中获取连接Connection conn = dataSource.getConnection();// 创建PreparedStatement对象String sql = "INSERT INTO users(name, age) VALUES (?, ?)";PreparedStatement stmt = conn.prepareStatement(sql);// 设置参数值stmt.setString(1, "Tom");stmt.setInt(2, 25);// 执行插入操作int count = stmt.executeUpdate();System.out.println(count + " rows affected.");// 关闭资源if (stmt != null) {stmt.close();}if (conn != null) {conn.close();}} catch (SQLException e) {e.printStackTrace();}}
}

在上面的代码中,使用了PreparedStatement的setXXX()方法设置参数值,然后通过executeUpdate()方法执行插入操作。

CallableStatement

使用CallableStatement可以调用存储过程,它是PreparedStatement的另一个子类。

下面是一个使用CallableStatement调用存储过程的示例代码。

import java.sql.*;
import org.apache.commons.dbcp2.BasicDataSource;public class JdbcDemo {public static void main(String[] args) {BasicDataSource dataSource = new BasicDataSource();// 设置数据库连接信息dataSource.setDriverClassName("com.mysql.jdbc.Driver");dataSource.setUrl("jdbc:mysql://localhost:3306/test");dataSource.setUsername("root");dataSource.setPassword("123456");try {// 从连接池中获取连接Connection conn = dataSource.getConnection();// 创建CallableStatement对象String sql = "{CALL get_user(?, ?)}";CallableStatement stmt = conn.prepareCall(sql);// 设置参数值stmt.setInt(1, 1);// 注册输出参数类型stmt.registerOutParameter(2, Types.VARCHAR);// 执行存储过程stmt.execute();// 获取输出参数值String name = stmt.getString(2);System.out.println("User name: " + name);// 关闭资源if (stmt != null) {stmt.close();}if (conn != null) {conn.close();}} catch (SQLException e) {e.printStackTrace();}}
}

在上面的代码中,使用了CallableStatement的registerOutParameter()方法注册输出参数类型,并使用getString()方法获取输出参数值。

总结一下,JDBC是Java的一种数据库访问标准,它提供了一套API,使用这些API可以让Java程序连接各种关系型数据库,并且进行数据的增、删、改、查等操作。JDBC的核心概念包括Connection、Statement、ResultSet、PreparedStatement和CallableStatement等。在实际开发中,建议使用连接池来管理数据库连接,常用的连接池有Apache Commons DBCP和C3P0等。


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

相关文章

JDBC是什么

JDBC介绍 JDBC( Java DataBase Connectivity ) 称为 Java数据库连接 ,它是一种用于数据库访问的应用程序 API ,由一组用Java语言编写的类和接口组成,有了JDBC就可以 用统一的语法对多种关系数据库进行访问,而不用担心其数据库操作…

如何使用JDBC操作数据库?一文带你吃透JDBC规范

文章目录 1. 前言2. JDBC 概述2.1 概念2.2 优点 3. JDBC 快速入门4. JDBC API详解4.1 DriverManager4.1.1 注册驱动4.1.2 获取连接 4.2 Connection4.2.1 获取执行sql的对象4.2.2 事务管理 4.3 Statement4.4 ResultSet4.5 PreparedStatement4.5.1 sql注入问题4.5.2 preparedStat…

JDBC详解

1.JDBC是什么? Java DataBase Connectivity(Java语言连接数据库) 2.JDBC的本质是什么? JDBC是SUN公司制定的一套接口(interface) java.sql.*;(这个软件包下有很多接口) 接口都有…

JDBC简介

文章目录 一、JDBC简介二、JDBC执行步骤三、执行步骤中类的简介1、DriverManager类2.Connection类3、ResultSet类 一、JDBC简介 1.什么是jdbc JDBC全称:java database connectivity,简称jdbc, 翻译就是 Java 数据库连接。 2.jdbc有什么作用…

JDBC详细介绍

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

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…