Java JDVC编程

1、Java的数据库编程:JDBC

JDBC(Java Database Connectivity)是Java中用来与数据库进行交互的一种标准API(应用程序编程接口)。它为开发人员提供了一种统一的方式来访问各种类型的数据库管理系统(DBMS),如 MySQL, Oracle, SQL Server, PostgreSQL 等。

通过 JDBC,Java 应用程序可以执行 SQL 语句来查询、更新或管理关系型数据库中的数据。JDBC API 定义了一系列的接口和类,这些接口和类通常由数据库供应商提供的驱动程序实现。不同的数据库可能需要不同类型的驱动程序。

2、使用 JDBC 进行数据库操作的基本步骤:  

2.1 加载驱动

在使用 JDBC 之前,需要先加载合适的数据库驱动程序。

在项目中创建文件夹lib,并将依赖包mysql-connector-java-5.1.47.jar复制到lib中,右键依赖包

点击 add as libarary...

2.2 建立连接

Connection接口实现类由数据库提供,获取Connection对象通常有两种方式:

DriverManager(驱动管理类)的静态方法获取:

// 加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
Connection connection = DriverManager.getConnection(url);

DataSource(数据源)对象获取。实际应用中会使用DataSource对象。

 //1、初始化一个数据源DataSource dataSource = new MysqlDataSource();((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");((MysqlDataSource) dataSource).setUser("root"); ((MysqlDataSource) dataSource).setPassword("123456");

setUrl()  , setUser() , setPassword()

setUrl()

setUrl() 方法通常用于配置 Java 数据源(DataSource)对象,以便指定与数据库建立连接所需的 URL。这个 URL 是 JDBC(Java Database Connectivity)连接字符串,它包含了数据库服务器的位置、端口、数据库名以及可能的一些其他的连接参数。

参数说明:

  • jdbc:mysql:// 表示使用 MySQL 驱动程序。
  • 127.0.0.1:3306 是 MySQL 数据库的默认端口地址。
  • db_test 是要连接的数据库的名字。
  • ?characterEncoding=utf8&useSSL=false 是一些额外的参数,比如设置字符编码为 UTF-8 并且禁用 SSL 加密。

setUser()

setUser() 方法通常是在配置 Java 数据源 (DataSource) 对象时使用的方法之一,用于设置数据库连接的用户名。这个方法通常与 setPassword() 方法一起使用,以便完整地配置数据库连接所需的认证信息。

参数说明:

    root  : 一个字符串,表示用于连接数据库的用户名

setPassword()

setPassword() 方法通常是在配置 Java 数据源 (DataSource) 对象时使用的方法之一,用于设置数据库连接的密码。这个方法与 setUser() 方法一起使用,以便完整地配置数据库连接所需的认证信息。

参数说明:

  • password:一个字符串,表示用于连接数据库的密码。

以上两种方式的区别是:

 1. DriverManager类来获取的Connection连接,是无法重复利用的,每次使用完以后释放资源 时,通过connection.close()都是关闭物理连接。

2. DataSource提供连接池的支持。连接池在初始化时将创建一定数量的数据库连接,这些连接 是可以复用的,每次使用完数据库连接,释放资源调用connection.close()都是将 Conncetion连接对象回收。

2.3 创建Statement和PreparedStatement对象

使用 Connection 对象创建 Statement 或 PreparedStatement 对象。

 //2、与数据库服务器建立连接Connection connection = dataSource.getConnection();

2.4 执行SQL语句

通过 Statement 或 PreparedStatement 对象执行 SQL 查询、插入、更新等操作。

插入操作:

        //编写SQLString sql = "insert  into student0 values (?,?);";PreparedStatement statement = connection.prepareStatement(sql); //4、预编译statement.setInt(1, id); // 第一个 ? = 1statement.setString(2, name);// 第二个 ? = name//打印拼接后的SQLSystem.out.println(statement);

 查询操作:

        //3、构造sqlString sql = "select * from student0";PreparedStatement statement = connection.prepareStatement(sql);//4、打印拼接后的SQLSystem.out.println(statement);

2.5 处理结果集

执行插入操作:

        //执行SQLint ret = statement.executeUpdate();System.out.println("ret = " + ret);

 执行查询操作:

需要通过 ResultSet 对象来处理返回的数据。

//ResultSet就表示查询的结果集合(临时表) 此处就需要针对表进行遍历ResultSet resultSet = statement.executeQuery();//遍历结果集合//通过next() 可获得临时表中的每一行数据,如果获取到最后一行之后,返回falsewhile (resultSet.next()) {int id = resultSet.getInt("id");String name = resultSet.getString("name");System.out.println("id = " + id + ", name = " + name);}

2.6 关闭资源

最后,确保所有打开的资源都被正确关闭,包括 ResultSet、Statement 和 Connection。

完整代码:

插入数据:


import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;public class ConnectDemo {public static void main(String[] args) throws SQLException {Scanner scan = new Scanner(System.in);//1、初始化一个数据源DataSource dataSource = new MysqlDataSource();((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");((MysqlDataSource) dataSource).setUser("root");((MysqlDataSource) dataSource).setPassword("123456");//2、与数据库服务器建立连接Connection connection = dataSource.getConnection();//3、编写SQLSystem.out.println("请输入学生姓名:");String name = scan.next();System.out.println("请输入学生的学号:");int id = scan.nextInt();String sql = "insert  into student0 values (?,?);";PreparedStatement statement = connection.prepareStatement(sql); //4、预编译statement.setInt(1, id); // 第一个 ? = 1statement.setString(2, name);// 第二个 ? = name//4、打印拼接厚的SQLSystem.out.println(statement);//5、执行SQLint ret = statement.executeUpdate();System.out.println("ret = " + ret);//6、释放资源statement.close();connection.close();}
}

查询数据:

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;public class ConnectDemo2 {public static void main(String[] args) throws SQLException {Scanner scan = new Scanner(System.in);//1、初始化一个数据源DataSource dataSource = new MysqlDataSource();((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");((MysqlDataSource) dataSource).setUser("root");((MysqlDataSource) dataSource).setPassword("123456");//2、与数据库服务器建立连接Connection connection = dataSource.getConnection();//3、构造sqlString sql = "select * from student0";PreparedStatement statement = connection.prepareStatement(sql);//4、打印拼接后的SQLSystem.out.println(statement);//5、执行sql//ResultSet就表示查询的结果集合(临时表) 此处就需要针对表进行遍历ResultSet resultSet = statement.executeQuery();//6.遍历结果集合//通过next() 可获得临时表中的每一行数据,如果获取到最后一行之后,返回falsewhile (resultSet.next()) {int id = resultSet.getInt("id");String name = resultSet.getString("name");System.out.println("id = " + id + ", name = " + name);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/401995.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习实践】基于深度学习的图像去雾算法-ChaIR-实践

本文介绍一个去雾算法ChaIR的使用方法,可以完成图像去雾,也可以用于图像去雨、去噪音等任务。本文不涉及论文原理,只包含源代码的跑通和使用。 先展示一下效果: 原图去雾 论文:Exploring the potential of channel …

如何以编程方式解析 XCResult 包的内容

文章目录 介绍查找 XCResult 包分享 XCResult 包 解析 XCResult 包自动解析 XCResult 包的内容 使用 XCResultKit 解析包的内容初始化库获取调用记录 获取测试信息导出屏幕录制 可运行 Demo初始化 Swift Package编写主文件代码解释运行 Demo 结论 介绍 XCResult 包是一个包含运…

ASP.NET在线交流论坛管理系统

ASP.NET在线交流论坛管理系统 说明文档 运行前附加数据库.mdf(或sql生成数据库) 主要技术: 基于asp.net架构和sql server数据库 用户功能有个人信息管理 帖了信息管理 意见反馈信息管理 点赞管理 收藏管理 后台管理员可以进行用户管理 …

数据结构-查找

一、基本术语 二、线性结构 ASL:平均查找长度 1、顺序查找 1.1、代码实现 typedef struct {int* elem;int TableLen; }SSTable;int Search_Seq(SSTable ST, int key) {ST.elem[0] key; //哨兵,使得循环不用判断数组是否会越界int i;for (i ST…

LoadRunner性能指标分析常用监控参数

性能分析,Windows自带一种 ,LoadRunner自带一种,2种参数类似 Windows自带入口 运行中搜索:性能监视器 进到:性能-数据收集器-用户定义-右键-新建-数据收集器集 名称自己任意输入,选择手动创建 数据类型根…

Haproxy的配置详解与使用

一、haproxy简介 HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬…

JavaScript基础——函数

函数简介 定义函数 调用函数 函数的参数和返回值 函数参数 1.有形参情况下不传递实参 2.传递数量少于形参个数的实参 3.传递数量等于形参个数的实参 函数返回值 报错Uncaught SyntaxError: Illegal return statement 返回数字和字符串 返回数组、对象和函数 没有返回…

nginx服务部署及其平滑升级

概述 1. 7层负载均衡(nginx) 1. 停掉4层的环境 systemctl disable --now keepalived.service # 停用之前的4层协议方式2. 源码安装nginx tar zxf nginx-1.22.1.tar.gz 具体方式是源码编译“三部曲” ./configure # 负责检查环境,生成指导…

JAVA实现GB/T 32960.3—2016电动汽车远程服务与管理系统技术规范 第3部分:通信协议及数据格式

完整的TCP服务端解析代码 1.maven依赖 不要的依赖自行删除&#xff0c;懒的删了 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-in…

Jenkins持续集成工具学习

一、从装修厨房看项目开发效率优化 二、持续集成工具 三、JavaEE项目部署方式对比 四、JenkinsSVN持续集成环境搭建 五、JenkinsGitHub持续集成环境搭建

8 个最佳 Java IDE 和文本编辑器

从 2024 年使用的最佳 Java IDE 和代码编辑器中进行选择&#xff0c;并提高您的 Java 生产力。 Java 是世界上最流行的编程语言之一&#xff0c;于 1995 年首次推出&#xff0c;它确实践行了“编写一个&#xff0c;随处运行”的座右铭。该语言用途广泛&#xff0c;可用于构建从…

排序算法之希尔排序

title: 希尔排序 date: 2024-7-25 10:48:15 0800 categories: 排序算法 tags:排序算法希尔排序 description: 1959年Shell发明&#xff0c;是简单插入排序的改进版。是一种高效的排序算法&#xff0c;通过分组和逐步缩减增量&#xff0c;使得数组在接近有序的情况下进行最终排…

【docker】dockerfile部署lnmp、docker compose初步

1、dockerfile部署lnmp mkdir /opt/lnmp cd /opt/lnmp mkdir nginx mysql php docker network create --subnet20.0.0.0/24 lnmp-net将wordpress文件夹拷贝到nginx、php文件夹 /opt/nginx/Dockerfile: # 使用官方的nginx镜像作为基础镜像 FROM nginx:latest# 复制默认配置文件…

分销商城小程序系统渠道拓展

线上卖货渠道很多&#xff0c;想要不断提高营收和新客获取&#xff0c;除了自己和工具本身努力外&#xff0c;还需要其他人的帮助来提高商城店铺的整体销量。 搭建saas商城系统网站/小程序&#xff0c;后台上货&#xff0c;设置支付、配送、营销、精美模板商城装修等内容&…

快速解析数据挖掘,最短时间明白什么是数据挖掘------下

信息损失函数 &#xff08;Information Loss Function&#xff09;是衡量在数据转换或处理过程中信息丢失的程度的函数。在数据科学、机器学习和统计学中&#xff0c;信息损失是一个重要的概念&#xff0c;尤其是在数据降维、特征选择、数据压缩和隐私保护等领域。 信息损失函…

数字化营销在公域场景中的无限可能

在如今的商业领域&#xff0c;公域场景为企业提供了广阔的发展空间&#xff0c;而数字化营销则成为了企业在这些场景中脱颖而出的关键利器。 ​ 一、电商平台营销 当企业在淘宝、京东等大型电商平台开设店铺&#xff0c;数字化营销便开始大显身手。 企业不仅能踊跃参与像双十…

【MySQL】explain 执行计划各字段解析

MySQL 如何读写数据&#xff1f;https://blog.csdn.net/weixin_43551213/article/details/140862538 MySQL 索引https://blog.csdn.net/weixin_43551213/article/details/140847916 在上一篇文章中提到了索引&#xff0c;而添加索引是优化 SQL 语句的一个方式&#xff0c;但是…

计算机网络——运输层(进程之间的通信、运输层端口,UDP与TCP、TCP详解)

运输层协议概述 进程之间的通信 运输层向它上面的应用层提供通信服务。 当网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时&#xff0c;都要使用协议栈中的运输层&#xff1b;而网络核心部分中的路由器在转发分组时只用到下三层的功能。 Q1&#xff1a;我们…

mysql windows安装与远程连接配置

安装包在主页资源中 一、安装(此安装教程为“mysql-installer-community-5.7.41.0.msi”安装教程&#xff0c;安装到win10环境) 保持默认选项&#xff0c;点击”Next“。 点开第一行加号展开一路展开找到“MySQL Server 5,7,41 - X64”点击选中点击一下中间只想右侧的箭头看到…

Attention注意力机制

神经网络注意力机制代码实现 import torch import torch.nn as nn import torch.nn.functional as F# MyAtt类实现思路分析 # 1 init函数 (self, query_size, key_size, value_size1, value_size2, output_size) # 准备2个线性层 注意力权重分布self.attn 注意力结果表示按照指…