JDBC

概念:

JDBC 就是使用Java语言操作关系型数据库的一套API 全称:( Java DataBase Connectivity ) Java 数据库连接。

JDBC的本质:

  • 官方(sun公司)定义的一套操作所有关系型数据库的规则,即 接口
  • 各个数据库厂商去实现这套接口,提供数据库驱动jar包
  • 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动 jar包中的实现类  

Java操作数据库的流程:

 

编写代码的步骤:

        //1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接String url= "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";String username= "root";String password= "Yuan1001*";Connection conn = DriverManager.getConnection(url, username, password);//3.定义sql语句String sql="update account set money=2000 where id=1";//4.获取执行sql的对象StatementStatement state = conn.createStatement();//5.执行sqlint count = state.executeUpdate(sql);//受影响的行数//6.处理结果System.out.println(count);//7.释放资源state.close();conn.close();

三、JDBC API详解 

 

3.1DriverManager 

url 连接路径:

语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参 数键值对1&参数键值对2…

示例:jdbc:mysql://127.0.0.1:3306/db1

==细节:== 如果连接的是本机mysql服务器,并且mysql服务默 认端口是3306,则url可以简写为:jdbc:mysql:///数 据库名称?参数键值对

配置 useSSL=false 参数,禁用安全连接方式,解决 警示提示 

user:用户名

password:密码

3.2Connection

Connection(数据库连接对象)的作用:

1.获取执行SQL的 对象

2.管理事物

3.2.1获取执行SQL的 对象

普通执行SQL对象:

预编译SQL的执行SQL对象:防止SQL注入

执行存储过程的对象:

 

3.2.2事务管理

  • MySQL事务管理:

  • JDBC事物管理:

//1. 注册驱动//Class.forName("com.mysql.jdbc.Driver");//2. 获取连接:如果连接的是本机mysql并且端口是默认
的 3306 可以简化书写String url = "jdbc:mysql:///db1?
useSSL=false";String username = "root";String password = "1234";Connection conn = 
DriverManager.getConnection(url, username, 
password);//3. 定义sql       String sql1 = "update account set money = 
3000 where id = 1";String sql2 = "update account set money = 
3000 where id = 2";//4. 获取执行sql的对象 StatementStatement stmt = conn.createStatement();try {// ============开启事务==========conn.setAutoCommit(false);//5. 执行sqlint count1 = stmt.executeUpdate(sql1);//
受影响的行数//6. 处理结果System.out.println(count1);int i = 3/0;//5. 执行sqlint count2 = stmt.executeUpdate(sql2);//
受影响的行数//6. 处理结果System.out.println(count2);// ============提交事务==========//程序运行到此处,说明没有出现任何问题,则需求提
交事务conn.commit();} catch (Exception e) {// ============回滚事务==========//程序在出现异常时会执行到这个地方,此时就需要回
滚事务conn.rollback();e.printStackTrace();}//7. 释放资源stmt.close();conn.close();
}
}

3.3Statement 

Statement对象的作用就是用来执行SQL语句

3.3.1 执行SQL语句

 

3.3.2代码实现 

DML语句
/*** 执行DML语句* @throws Exception*/
@Test
public void testDML() throws  Exception {//1. 注册驱动//Class.forName("com.mysql.jdbc.Driver");//2. 获取连接:如果连接的是本机mysql并且端口是默认的 
3306 可以简化书写String url = "jdbc:mysql:///db1?
useSSL=false";String username = "root";执行DDL语句String password = "1234";Connection conn = 
DriverManager.getConnection(url, username, 
password);//3. 定义sqlString sql = "update account set money = 3000 
where id = 1";//4. 获取执行sql的对象 StatementStatement stmt = conn.createStatement();//5. 执行sqlint count = stmt.executeUpdate(sql);//执行完
DML语句,受影响的行数//6. 处理结果//System.out.println(count);if(count > 0){System.out.println("修改成功~");}else{System.out.println("修改失败~");}//7. 释放资源stmt.close();conn.close();
}

 3.4ResultSet

ResultSet(结果集对象)的作用:

1.封装DQL查询语句的结果

 

获取查询结果

 

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

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

相关文章

ChatGPT-4.0:学术研究论文检索的新篇章

ChatGPT-4.0:学术研究论文检索的新篇章 在当代学术研究的广阔天地,知识的追求始终在不断进化,紧密拥抱能够加强研究者探索和吸收信息能力的创新技术。ChatGPT-4.0的出现代表了学术探索的一次质的飞跃,为研究人员查询学术论文提供…

Filebeat将csv导入es尝试

一、安装 在docker中安装部署ELKfilebeat 二、主要配置 - type: log # Change to true to enable this input configuration. enabled: true # Paths that should be crawled and fetched. Glob based paths. paths: - /home/centos/pip_v2.csv #源路径 #…

Sqli-labs靶场第15关详解[Sqli-labs-less-15]

Sqli-labs-Less-15 #自动化注入-SQLmap工具注入 SQLmap用户手册:文档介绍 - sqlmap 用户手册 由于这题是post请求,所以先使用burp进行抓包,然后将数据包存入txt文件中打包 用-r 选择目标txt文件 python sqlmap.py -r data.txt -current-db…

Visual Studio C++项目远程断点调试客户现场程序方法

前言 程序开发一个很常见的场景,就是程序在自己本地部署调试明明一点问题都没有,但是部署到客户现场就问题百出,要调试起来还很困难,在自己本地也没有条件复现,很多时候只能靠日志一点点排查和猜测,耗费大…

我在代码随想录|写代码Day31 | 贪心算法总结篇 | 贪心终结一题

&#x1f525;博客介绍&#xff1a; 27dCnc &#x1f3a5;系列专栏&#xff1a; <<数据结构与算法>> << 算法入门>> << C项目>> &#x1f3a5; 当前专栏: << 算法入门>> 专题 : 数据结构帮助小白快速入门算法 &#x1f4…

window使用hyper安装centos及docker、kubenet\k8s

window虚拟机安装centos&#xff1a; windows系统下安装linux&#xff08;centos7&#xff09;虚拟机详细教程&#xff08;virtualbox环境&#xff09;_windows安装linux虚拟机-CSDN博客 准备3台机器&#xff1a; 172.29.34.250 172.29.37.174 172.29.39.106 安装教程&…

关于定时器 setTimeout 可能会引发的内存泄露

前言 setTimeout 本身并不直接引发内存泄露&#xff0c;但如果使用不当&#xff0c;确实可以间接导致内存泄漏。以下是一些使用 setTimeout 可能导致内存泄漏的情况&#xff1a; 闭包引用&#xff1a; 在 setTimeout 的回调函数中&#xff0c;如果引用了外部变量&#xff08;形…

AJAX实例

AJAX - Asynchronous JavaScript and XML - 异步的JavaScript与XML&#xff0c;不是一门新技术&#xff0c;只是一个新的术语。&#xff08;老技术新玩法&#xff09; - 使用AJAX&#xff0c;网页能够将增量更新呈现在页面上&#xff0c;而不需要刷新整个页面。 - 虽然X代表…

力扣1892 页面推荐Ⅱ

力扣1892&#xff0c;页面推荐Ⅱ&#xff0c;为一个社交媒体网站实施一个页面推荐系统。如果页面被user_id的 至少一个朋友喜欢 &#xff0c;而 不被user_id喜欢 &#xff0c;你的系统将 推荐 一个页面到user_id。 目录 题目描述 解题思路 完整代码 优化 题目描述 表&…

【C++】cout 的默认精度

cout 的默认精度为&#xff1a; 四舍五入保留六位有效数字输出。例如 123.4567 应该输出为 123.457&#xff0c;5432.10 应该输出为 5432.1。 一、使用C语言输出符合cout默认精度的数值 double weight; scanf("%lf",&weight);printf("%.6g",weight)…

FlinkSql hint之状态生命周期 state_ttl

状态生命周期hint FlinkSQL 的 state ttl&#xff08;Time-To-Live&#xff0c;生存时间&#xff09;是一个用于管理状态数据生命周期的机制。在 Flink 流处理中&#xff0c;状态是一个重要的概念&#xff0c;它允许跨时间窗口或事件时间处理的状态化操作。然而&#xff0c;随…

分治法(Divide and Conquer)

目录 1.定义 2.例子 3.注意 1.定义 分治法&#xff08;Divide and Conquer&#xff09;是一种解决问题的算法设计策略&#xff0c;它将一个大问题分解成若干个规模较小且结构与原问题相似的子问题&#xff0c;然后递归地解决这些子问题&#xff0c;最后将子问题的解合并起来…

Dockerfile 语法教程

Dockerfile 语法教程 文章目录 Dockerfile 语法教程Dockerfile 语法教程基础概念Dockerfile 简介镜像、容器、仓库的概念 Dockerfile 基本语法 Dockerfile 基本语法Dockerfile 的基本结构注释的使用指令的格式指令的执行顺序 Dockerfile 常用指令FROM 指令RUN 指令CMD 指令ENTR…

鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?

“2024年是原生鸿蒙的关键一年&#xff0c;我们要加快推进各类鸿蒙原生应用的开发&#xff0c;集中打赢技术底座和三方生态两大最艰巨的战斗。”这是余承东在新年信中表达的决心。 随后在1月18日举行的鸿蒙生态千帆启航仪式上&#xff0c;华为宣布 HarmonyOS NEXT 鸿蒙星河版系…

当开发人员无法解决问题时,测试人员应该如何与他们沟通?

当开发人员无法解决问题时&#xff0c;测试人员可以采取以下方式进行沟通&#xff1a; 保持耐心和理解&#xff1a;意识到解决问题可能需要时间和努力&#xff0c;避免对开发人员施加过度压力。提供更多信息和细节&#xff1a;检查是否有其他相关信息或细节可以提供给开发人员…

Codeforces Round 929 (Div. 3)---->E. Turtle vs. Rabbit Race: Optimal Trainings

一&#xff0c;思路&#xff1a; 1&#xff0c;做这题如果对二分敏感的话&#xff0c;看完题目就大概很容易想到&#xff0c;通过二分来找到一个 r ,使得 [ l, r] 之间的和最接近 u (因为这样才是 Isaac 所能获得的最大提升)。 2&#xff0c;还有一个特殊情况&#xff0c;结合…

MobiLlama: Towards Accurate and Lightweight Fully Transparent GPT

论文的主要目的是设计一个准确且高效的小型语言模型&#xff08;SLM&#xff09;&#xff0c;以满足资源受限设备的需求。以下是根据论文内容整理的要点&#xff1a; 背景与挑战&#xff1a; 大型语言模型&#xff08;LLMs&#xff09;在处理复杂任务时表现出色&#xff0c;但它…

Linux下进程相关概念详解

目录 一、操作系统 概念 设计操作系统的目的 定位 如何理解“管理” 系统调用和库函数概念 二、进程 概念 描述进程—PCB&#xff08;process control block&#xff09; 查看进程 进程状态 进程优先级 三、其它的进程概念 一、操作系统 概念 任何计算机系统都包…

【Easyx】easyx从入门到精通 — 初步入门

easyx 初步入门 1 安装easyx图形库2 如何使用Easyx3 效果初试4 基本图形绘制4.1 绘制点4.2 绘制直线4.3 绘制圆形4.4 绘制矩形4.5 绘制椭圆4.6 绘制圆角矩形4.7 绘制扇形 Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读&#xff01;&#xff01;&#xff01;下一篇…