Java-数据库连接(JDBC小白教学)

!文章最后附有完整代码!

目录

🔖JDBC概述

🔖JDBC连接数据库

🔖添加数据(insert)

🔖修改数据(Update)

🔖删除数据(delete)

🔖查询数据(Select)

🔖关闭与数据库的链接通道

💡PreparedStatement和Statement 区别


🔖JDBC概述

 ⦁  JDBC全称Java DataBase Connection 即Java数据库连接

 ⦁  Java程序可以连接不同的数据库,但是,不同的数据库具体的连接细节有些不同,所以连接数据库的细节就需要由数据库的开发商去实现,而Java开发商只需设计出一系列连接数据库的接口规范即可,然后由不同的数据库开发商去实现。

2fe3802b565d4cbc924ef998cd04acec.png

//Java中提供一个连接数据库的接口规范   
interface oper{insert();delete();select();update();}
//oracle可以实现Java中提供的接口oracle implements oper{insert(){   }//在此接口中定义自己的功能 delete(){   } select(){   } update(){   }}//mysql也可以实现Java中提供的接口mysql implements oper{insert(){   }//定义属于mysql的功能delete(){   }select(){   }update(){   }}

🔖JDBC连接数据库

① 在项目添加  mysql-connector-java-8.0.16.jar  文件

    该文件是由mysql官方开发实现的,包含具体连接数据库的功能代码   

② 加载驱动类  Class.forName("com.mysql.cj.jdbc.Driver");

//加载驱动类
Class.forName("com.mysql.cj.jdbc.Driver");

③ 建立与数据库的连接,获得连接对象

//加载驱动类
Class.forName("com.mysql.cj.jdbc.Driver");//建立与数据库的连接,获得连接对象
String url="jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Asia/Shanghai";String user ="root";//账户String dbpassword="root";//密码Connection connection = DriverManager.getConnection(url, user, dbpassword);

🎉 就此,Java程序与数据库的连接就完成了,而我们所要连接的数据库名写在如下图的地方

     < 例如我连接的就是我的 test数据库 >
2e908b10eca745b3bf207ffcaac98731.png
 


🔖添加数据(insert)

 // //预先编译sql语句PreparedStatement ps = connection.prepareStatement("insert into score (id,name,subject,score)values (?,?,?,?)");ps.setObject(1,1 );ps.setObject(2, "小李");ps.setObject(3, "数学");ps.setObject(4, 88);ps.executeUpdate();  //用于执行查询语句 返回一个集合

 💡添加数据成功!

f4d58d2e13cd46f49326f2dd5dce8220.png

?占位符,表示此处需要接收一个参数

🔖修改数据(Update)

PreparedStatement ps = connection.prepareStatement("update score set score=? where id=?");
ps.setObject(1, 95);
ps.setObject(2, 1);
ps.executeUpdate();

 💡修改数据成功!

b7194828b64a4032a518f96cc0972f4a.png


🔖删除数据(delete)

PreparedStatement ps =  connection.prepareStatement("delete from score where id=?");
ps.setObject(1,1);
ps.executeUpdate();

💡删除数据成功!

ee4b7641a39643f4883aeb38c3335228.png


🔖查询数据(Select)

PreparedStatement ps =connection.prepareStatement("Select name,subject,score from score where id=?");ps.setObject(1, 2);ResultSet rs = ps.executeQuery();while (rs.next()){System.out.println( rs.getString("name"));System.out.println(rs.getString("subject"));System.out.println(rs.getString("score"));}

💡查询结果:

2528cfa0491d4318b4520368b389df66.pnga18585a71055496dbe3455cd354accdb.png


🔖关闭与数据库的链接通道

            //关闭数据库连接ps.close();connection.close();

💡PreparedStatement和Statement 区别

相同点: 都是向数据库发送sql

Statement:   将参数直接拼接到sql中,要拼接字符串,写起来麻烦,,安全性差,可以在参数中拼接 or 1=1进行攻击,删除表中所有数据

PreparedStatement : 先用 ?占位,然后通过setObject方法赋值,,写起来不用拼接字符串,,安全可靠,并且会在赋值时进行检测,可以防止sql注入攻击。

完整代码:

package chatproject;import java.sql.*;public class Demo {public static void main(String[] args) {try {//加载驱动类Class.forName("com.mysql.cj.jdbc.Driver");//建立与数据库的连接,获得连接对象String url="jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Asia/Shanghai";String user ="root";String dbpassword="root";Connection connection = DriverManager.getConnection(url, user, dbpassword);//发送sql//插入数据/*PreparedStatement ps = connection.prepareStatement("insert into score (id,name,subject,score)values (?,?,?,?)");ps.setObject(1,1 );ps.setObject(2, "小李");ps.setObject(3, "数学");ps.setObject(4, 88);ps.executeUpdate();  //用于执行查询语句 返回一个集合*///修改数据/* PreparedStatement ps = connection.prepareStatement("update score set score=? where id=?");ps.setObject(1, 95);ps.setObject(2, 1);ps.executeUpdate();*///删除数据/* PreparedStatement ps =  connection.prepareStatement("delete from score where id=?");ps.setObject(1,1);ps.executeUpdate();*///查询数据PreparedStatement ps =connection.prepareStatement("Select name,subject,score from score where id=?");ps.setObject(1, 2);ResultSet rs = ps.executeQuery();while (rs.next()){System.out.println( rs.getString("name"));System.out.println(rs.getString("subject"));System.out.println(rs.getString("score"));}//关闭数据库连接ps.close();connection.close();} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();}}
}

 ▐ 结语:

       希望这篇关于Java数据库连接方式的介绍能对大家有所帮助,欢迎大佬们留言或私信与我交流~~学海漫浩浩,我亦苦作舟!大家一起学习,一起进步!

本人微信: g2279605572


a6771da335744e72a4d4e585664c2409.png

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

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

相关文章

【千帆AppBuidler】零代码构建AI人工智能应用,全网都在喊话歌手谁能应战,一键AI制作歌手信息查询应用

欢迎来到《小5讲堂》 这是《千帆平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 背景创建应用平台地址随机生成快速创建应用头像应用名称应用描述…

VMware Workstation 17.5.2 Pro 发布,产品订阅模式首个重大变更

VMware Workstation 17.5.2 Pro 发布&#xff0c;产品订阅模式首个重大变更 基于 x86 的 Windows、Linux 桌面虚拟化软件 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-workstation-17/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页…

Python 全栈体系【四阶】(四十三)

第五章 深度学习 九、图像分割 3. 常用模型 3.4 DeepLab 系列 3.4.1 DeepLab v1(2015) 3.4.1.1 概述 图像分割和图像分类不一样&#xff0c;要对图像每个像素进行精确分类。在使用CNN对图像进行卷积、池化过程中&#xff0c;会导致特征图尺寸大幅度下降、分辨率降低&…

全志R128 SDK HAL 模块开发指南之PWM

PWM 模块介绍 脉冲宽度调制&#xff08;PWM&#xff09;是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用&#xff0c;方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM 具有以下特点&#xff1a; 支持脉冲&#xff08;脉冲个数可配&#xf…

【java】异常与错误

Throwable包括Error和Expected。 Error Error错误是程序无法处理的&#xff0c;由JVM产生并抛出的。 举例&#xff1a;StackOverflowError \ ThreadDeath Expected Expected异常包括两类&#xff0c;即受检异常(非运行时异常)和非受检异常(运行时异常)&#xff0c;异常往往…

oracle 临时表 在sql 里面用完要删除吗

临时表 在sql 里面用完要删除吗 在Oracle数据库中&#xff0c;如果您使用的是ON COMMIT DELETE ROWS创建的临时表&#xff0c;那么当当前会话结束或者执行了显式的COMMIT或ROLLBACK操作后&#xff0c;表中的数据会自动被清除。这意味着通常情况下&#xff0c;您不需要手动删除…

阿里云服务器下,部署LNMP环境安装wordpress

目录 1 LNMP部署1、简单说明2、nginx部署3、php8 安装4、mysql8安装5、配置 nginx 实现支持 PHP 程序6、安装 php 组件7、测试 2 wordpress部署1、安装2、配置 总结 1 LNMP部署 1、简单说明 首先需要明白&#xff0c;LNMP指的是Linux、Nginx、MySQL、PHP。而如果使用阿里云服…

数字化应用标杆 | 又两家成套厂效率翻倍,利用率高达93%以上!

利驰 联能 & 利驰 俊郎 近日&#xff0c;利驰数字科技&#xff08;苏州&#xff09;有限公司&#xff08;简称利驰软件&#xff09;成功与俊郎电气有限公司&#xff08;简称俊郎电气&#xff09;、浙江联能电气有限公司&#xff08;简称联能电气&#xff09;成功确立了数字…

【全开源】国际版JAVA同城服务美容美发到店服务上门服务系统源码支持Android+IOS+H5

国际版同城服务美容美发到店与上门服务系统&#xff1a;一站式打造美丽新体验 随着人们生活水平的提高和审美观念的升级&#xff0c;美容美发服务已成为人们日常生活中不可或缺的一部分。为了满足全球消费者的多样化需求&#xff0c;我们推出了“国际版同城服务美容美发到店与…

时间管理的误区:为什么你越高效就越没有时间?

在平衡生活和工作的过程中&#xff0c;时间管理无疑很重要。然而&#xff0c;许多人发现在提高效率后&#xff0c;却发现自己越来越感到时间紧迫&#xff0c;仿佛陷入了一个无解的循环。这背后的原因&#xff0c;往往是由于一系列时间管理的误区所致。 一个常见的误区是&…

在 CLion、Dev-C++ 或 Code::Blocks 下面配置 EasyX

前言 本文提供了将 EasyX 适配到 MinGW 上的库文件&#xff0c;并详细介绍如何将 EasyX 配置到 DevCpp 或 CodeBlocks 等以 MinGW 为编译器的集成开发环境。 库文件下载 点击这里下载 easyx4mingw_20220901 点击这里下载 easyx4mingw_20220610 &#xff08;上个版本&#x…

Php 读取execl

安装PhpSpreadsheet composer require phpoffice/phpspreadsheet <?phprequire vendor/autoload.php; // 引入Composer自动加载文件use PhpOffice\PhpSpreadsheet\IOFactory;// 指定Excel文件路径 $filePath path/to/your/excel/file.xlsx;try {// 加载Excel文件$spreadsh…

C++并发:锁

一、前言 C中的锁和同步原语的多样化选择使得程序员可以根据具体的线程和数据保护需求来选择最合适的工具。这些工具的正确使用可以大大提高程序的稳定性和性能&#xff0c;本文讨论了部分锁。 二、std::lock 在C中&#xff0c;std::lock 是一个用于一次性锁定两个或多个互斥…

鸿蒙 DevEcoStudio:关系型数据库增删改查练习

修改entry/src/main/ets/entryability目录下的EntryAbility.ts文件&#xff1a; 在 export default class EntryAbility extends UIAbility {onCreate(want, launchParam) {hilog.info(0x0000, testTag, %{public}s, Ability onCreate); 之后添加&#xff1a; const config…

学习Nginx(五):虚拟主机配置

核心功能 在演示虚拟主机配置之前&#xff0c;来看一下Nginx配置的核心功能说明。 了解配置更多功能&#xff0c;请查看官方说明&#xff1a; http://nginx.org/en/docs/ngx_core_module.html [rootRockyLinux9 conf]# cat nginx.conf # 核心功能&#xff0c;全局配置 # 设置启…

【Vue3源码实现】Ref isRef unRef proxyRefs实现

前言 在上篇文章中 我们了解了响应式原理&#xff0c;并在最后实现了reactive。 上文链接&#x1f525;&#x1f525;&#x1f525;Vue3响应式原理实现与track和trigger依赖收集和触发依赖 在我们的日常业务中&#xff0c;我们有可能需要将一个基础数据类型的值也转换成响应式…

Linux 生态与工具

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 目录 Linux生态简介:Linux工具lrzsz&#xff…

抖音产品全线恢复

商城&#xff0c;商品&#xff0c;直播&#xff0c;小黄车 等等

mysql数据库插入中文失败

有一张表&#xff0c;结构如下&#xff1a; MariaDB [test]> show create table dept; ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------…

智能仪表在铁塔行业的应用

应用场景 可应用于基站的交直流配电箱及对基站内的动力设备进行数据采集和控制。 功能 1.对多个回路进行全电参量测量&#xff0c;实现基站内各回路用电能耗的集中管理&#xff1b; 2.丰富的DI/DO输入输出&#xff0c;NTC测温&#xff0c;温湿度测量等非电参量监测&#xff…