当前位置: 首页 > news >正文

jdbc(mysql)

1.概述

jdbc:java database connection(java与数据库连接)

java可以连接不同数据库,不同数据库连接细节不同,具体细节都由数据库自己实现
由java设计出一系列连接数据库的接口规范,然后由不同的数据库开发商去实现。jdbc实现了java与数据库之间的数据交互。

2.jdbc连接步骤

1.创建一个java项目,创建一个lib包和idea包同级,接着把需要连接的数据库jar包复制到lib内。

 2.右键jar文件,点击add as library,这一步完成后就可以看见jar文件可以打开了,这一步才是真正意义上的加入可以使用这个jar文件,完成这一步后才可以点开jar包。

3.加载驱动
 

//反射机制加载 两个留一个Class.forName("com.mysql.cj.jdbc.Driver");//DriverManager.registerDriver(new Driver());//建立与数据库的连接,获得连接对象String url = "jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";//serverTimezone=Asia/Shanghai是数据8才加上的,以前版本的可以不用写String user = "root";String password = "123456";//Connection connection = DriverManager.getConnection(url, user, password);Connection connection = DriverManager.getConnection(url, user, password);//发送sqlStatement statement = connection.createStatement();statement.executeUpdate("insert into course(name) values('操作系统')");//关闭连接statement.close();connection.close();

3.jdbc连接两种方式

1。创建statement对象

 创建statement对象,此类方式对于sql语句主要是将sql语句与数据拼接发送到数据库进行实现

public void add(String NAME,String gender,String birthday,String phonenum,String adress,double height,int majorid) throws ClassNotFoundException, SQLException {//加载驱动Class.forName("com.mysql.cj.jdbc.Driver");//建立连接String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";String user="root";String password="123456";Connection connection = DriverManager.getConnection(url,user ,password );//发送sqlStatement statement = connection.createStatement();statement.executeUpdate("INSERT INTO student(NAME,gender,birthday,phonenum,adress,height,majorid)" +"VALUES('"+NAME+"','"+gender+"','"+birthday+"','"+phonenum+"','"+adress+"',"+height+","+majorid+")");//关闭连接statement.close();connection.close();}

2. 创建preparedStatement对象

创建preparedStatement对象,此类方法运用?占位符,通过preparedStatement的setobject方法依次对占位符?进行赋值,有较高的安全性。

public void add(String NAME,String gender,String birthday,String phonenum,String adress,double height,int majorid) throws ClassNotFoundException, SQLException {//加载驱动Class.forName("com.mysql.cj.jdbc.Driver");//建立连接String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";String user="root";String password="123456";Connection connection = DriverManager.getConnection(url,user ,password );//发送sql//预先编译 ?是占位符,预先写好sql语句存入对象里面,后面通过对象方法存入数据,最后在发送完整的sql语句PreparedStatement preparedStatement = connection.prepareStatement("insert into student(name,gender,birthday,phonenum,adress,height,majorid)values (?,?,?,?,?,?,?)");preparedStatement.setObject(1,NAME);preparedStatement.setObject(2,gender);preparedStatement.setObject(3,birthday);preparedStatement.setObject(4,phonenum);preparedStatement.setObject(5,adress);preparedStatement.setObject(6,height);preparedStatement.setObject(7,majorid);//发送sql语句preparedStatement.executeUpdate();//关闭连接preparedStatement.close();connection.close();}

 4.两种jdbc连接方式的区别

preparedstatement 与 statement的区别
相同:都是向数据库发送sql的
不同:prepared statement :先预写sql语句,数据使用?占位,然后通过setobject方法对?依次赋值,由1开始,安全可靠,
在赋值时进行检测,防止被攻击
statement:直接在sql语句1拼接出来,安全性差,例如,可以在删除语句中拼接or 1=1这样每一条数据库信息都会被删除,但是prepared statement会进行检测所有比statement安全一些
 

5.查数据

jdbc主要功能就是增删改查,增删改方式差不多,知道如何连接就可以发现规律,增删改只需要对数据库数据进行操作,查的话会传回数据,与前面的略有不同。

对于查数据我们还是使用prepared statement,使用他的executeQuery()方法,此方法会返回一个set集合用来存储查找到的的数据,数据可能很多,所有我们可以使用arraylist来存储。

我们首先创建一个student类做举例 

public class student {private int id;private String name;private String gender;private Date birthday;private String phonenum;private String adress;private Date regTime;private double heught;private int majorid;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public String getPhonenum() {return phonenum;}public void setPhonenum(String phonenum) {this.phonenum = phonenum;}public String getAdress() {return adress;}public void setAdress(String adress) {this.adress = adress;}public Date getRegTime() {return regTime;}public void setRegTime(Date regTime) {this.regTime = regTime;}public double getHeught() {return heught;}public void setHeught(double heught) {this.heught = heught;}public int getMajorid() {return majorid;}public void setMajorid(int majorid) {this.majorid = majorid;}@Overridepublic String toString() {return "student{" +"id=" + id +", name='" + name + '\'' +", gender='" + gender + '\'' +", birthday=" + birthday +", phonenum='" + phonenum + '\'' +", adress='" + adress + '\'' +", regTime=" + regTime +", heught=" + heught +", majorid=" + majorid +'}';}
}

这是我们数据库中学生表的属性。 

 

public ArrayList<student> select() throws ClassNotFoundException, SQLException {//多条数据Class.forName("com.mysql.cj.jdbc.Driver");String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";String user="root";String password="123456";Connection connection = DriverManager.getConnection(url,user ,password );PreparedStatement preparedStatement = connection.prepareStatement("select * from student where name = ?");preparedStatement.setObject(1,"刘晨");ResultSet set = preparedStatement.executeQuery();ArrayList<student> a = new ArrayList<>();while (set.next()){student st = new student();st.setId(set.getInt("id"));//get里面的字段必须与数据库中要查找的数据的字段相同st.setGender(set.getString("gender"));st.setBirthday(set.getDate("birthday"));st.setName(set.getString("NAME"));st.setHeught(set.getDouble("height"));st.setAdress(set.getString("adress"));st.setMajorid(set.getInt("majorid"));st.setPhonenum(set.getString("phonenum"));st.setRegTime(set.getDate("reg_time"));a.add(st);}set.close();preparedStatement.close();connection.close();return a;}

 


 

 

相关文章:

jdbc(mysql)

1.概述 jdbc&#xff1a;java database connection&#xff08;java与数据库连接&#xff09; java可以连接不同数据库&#xff0c;不同数据库连接细节不同&#xff0c;具体细节都由数据库自己实现 由java设计出一系列连接数据库的接口规范&#xff0c;然后由不同的数据库开发…...

【Linux】搜索log在哪个文件中执行的方法

在Linux中&#xff0c;如果你需要找到包含特定文本&#xff08;比如一段log&#xff09;的文件&#xff0c;你可以使用grep命令结合一些其他工具来实现这一目的。这里有几个方法可以帮助你找到包含特定log内容的文件。 1. 使用grep直接在特定目录或文件中搜索 如果你知道log大…...

web小游戏开发:2048(完)移动操作及动画效果

web小游戏开发:2048(完)移动操作及动画效果 添加随机数字游戏开始时的初始化显示分数移动和合并获取行列元素下标记录移动轨迹完整的 js小结添加随机数字 书接前文,我们在前边定义了一个 move 方法,暂时先往后放放。 在我们已经初始化好的界面上,我们需要先制作一个出现…...

Redis学习笔记——第20章 Lua脚本

第20章 Lua脚本 20.1 创建并修改Lua环境 20.1.1 创建Lua环境 服务器创建一个新的基本的Lua环境 20.1.2 载入函数库 修改Lua环境&#xff0c;载入一些库函数 20.1.3 创建redis全局表格 全局变量&#xff0c;支持在Lua脚本中执行redis命令 20.1.4 使用redis自制随机函数来…...

MySQL--日志管理

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、日志简介 MySQL日志主要分为4类&#xff0c;使用这些日志文件&#xff0c;可以查看MySQL内部发生的事情。这4类日志分别是: 错误日志&#xff1…...

【Nuxt】内置组件和全局样式使用

内置组件 Nuxt3框架也提供一些内置的组件&#xff0c;常用的如下&#xff1a; SEO组件&#xff1a;Html、Body、Head、Title、Meta、Style、Link、NoScript、BaseNuxtWelcome:欢迎页面组件&#xff0c;该组件是nuxt/ui的部分NuxtLayout:是Nuxt自带的页面布局组件NuxtPage:是N…...

Java中spring boot validation 自定义注解使用

创建一个注解 Target({ElementType.FIELD})//需要写注解的三三个要素 Retention(RUNTIME) Documented Constraint(validatedBy {IsSystemYesNoVaildation.class})//绑定 在这里会报错 你需要去实现 public interface IsSystemYesNo {String message() default "数据字典&…...

Android笔试面试题AI答之广播(1)

文章目录 1.简述广播的分类和使用场景 &#xff1f;一、广播分类二、使用场景举例总结 2.广播的两种注册方式的区别&#xff1f;1. 注册位置与方式2. 生命周期与持久性3. 接收广播的时机4. 安全性与权限5. 优先级与有序广播总结 3.简述广播发送和接收的原理 &#xff1f;一、广…...

微软商店无法加载,检查你的连接-解决方案

微软商店默认直连国内的服务器。 如果有代理&#xff0c;关闭代理就可以恢复网络了。 但是我就是想用代理&#xff0c;我感觉代理更快&#xff0c; 搜索了很多办法&#xff0c;都没有生效。 然后我在哔哩哔哩的视频下方&#xff0c;看到大家留言&#xff0c;测试了一下&#x…...

数据结构实验报告-树与二叉树

桂 林 理 工 大 学 实 验 报 告 一、实验名称&#xff1a; 实验6 树和二叉树 二、实验内容&#xff1a; 1.编写二叉树的递归遍历算法&#xff0c;实现:给定一棵二叉树的“扩展先序遍历序列”&#xff0c;创建这棵二叉树。 (1)输出二叉树的先序遍历的结点序列。 (2)输出二…...

基于Django+MySQL球馆场地预约系统的设计与实现(源码+论文+部署讲解等)

博主介绍&#xff1a;✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术栈介绍&#xff1a;我是程序员阿龙&#xff…...

8 MQTT

8 MQTT 1、相关概念2、MQTT的操作过程3、MQTT协议3.1 固定报文3.2 连接报文3.3 确认连接请求3.4 构造订阅报文3.5 订阅确认报文3.6 发布报文3.7 其他报文 1、相关概念 MQTT [1] 全名为Message Queuing Telemetry Transport&#xff0c;是一种基于TCP/IP协议上传输的轻量级通信…...

【文件系统】抽象磁盘的存储结构 CHS寻址法 | sector数组 | LAB数组

目录 1.为什么要抽象 2.逻辑抽象_版本1 2.1sector数组 ​2.2index转化CHS 3.逻辑抽象_版本2 3.1LBA数组 3.2LAB下标转化sector下标 文件其实就是在磁盘中占有几个扇区的问题❗文件是很多个sector的数组下标❗文件是有很多块构成的❗❗文件由很多扇区构成------>文件…...

基于python旅游推荐系统(源码+论文+部署讲解等)

博主介绍&#xff1a;✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术栈介绍&#xff1a;我是程序员阿龙&#xff…...

Mysql大单表JSON优化

优化方案 MySQL 8.0.32 中&#xff0c;有几种方法可以优化存储 JSON 字符串的数据表。以下是一些建议&#xff0c;可以帮助您减少存储空间&#xff1a; 使用压缩: MySQL 8.0 支持表级压缩&#xff0c;可以通过修改表来启用压缩。 ALTER TABLE your_table ROW_FORMATCOMPRESS…...

电脑开机启动项管理小工具,绿色免安装

HiBit Startup Manager 是一款功能强大的启动项管理工具&#xff0c;旨在帮助用户管理和优化计算机的自动启动程序。该软件通过添加或删除应用程序、编辑它们的属性以及管理流程、服务、任务调度程序和上下文菜单来实现这一目标。 HiBit Startup Manager 提供了以下主要功能&a…...

一例AutoHotkey语言生成的文件夹病毒分析

概述 这是一个使用AutoHotkey语言编写的文件夹病毒&#xff0c;使用ftp服务器来当作C2&#xff0c;通过U盘传播&#xff0c;样本很古老&#xff0c;原理也很简单&#xff0c;这种语言的样本还是第一次见到&#xff0c;记录一下。 样本的基本信息 PE32库: AutoIt(3.XX)[-]编译…...

【机器学习第7章——贝叶斯分类器】

机器学习第7章——贝叶斯分类器 7.贝叶斯分类器7.1贝叶斯决策论7.2 朴素贝叶斯分类器条件概率的m估计 7.3 极大似然估计优点基本原理 7.4 贝叶斯网络7.5 半朴素贝叶斯分类器7.6 EM算法7.7 EM算法实现 7.贝叶斯分类器 7.1贝叶斯决策论 一个医疗判断问题 有两个可选的假设&#…...

C++ QT开发 学习笔记(3)

C QT开发 学习笔记(3) - WPS项目 标准对话框 对话框类说明静态函数函数说明QFileDialog文件对话框getOpenFileName()选择打开一个文件getOpenFileNames()选择打开多个文件getSaveFileName()选择保存一个文件getExistingDirectory()选择一个己有的目录getOpenFileUrl()选择打幵…...

【Python实战】如何优雅地实现文字 二维码检测?

前几篇&#xff0c;和大家分享了如何通过 Python 和相关库&#xff0c;自动化处理 PDF 文档&#xff0c;提高办公效率。 【Python实战】自动化处理 PDF 文档&#xff0c;完美实现 WPS 会员功能【Python实战】如何优雅地实现 PDF 去水印&#xff1f;【Python实战】一键生成 PDF…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...