MySQL -- JDBC

1、JDBC是什么:

是SUN公司制定的一套接口(interface)。接口都有调用者和实现者。面向接口调用、面向接口写实现类,这都属于面向接口编程。

2、在使用JDBC的六个步骤:
1.注册驱动(告诉Java程序,即将连接的是哪个品牌的数据库)2.获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,使用完后记得关闭通道)。3.获取数据库操作对象(专门执行sql语句的对象)4.执行SQL语句(DQL,DML…)5.处理查询结果集 (只有当第四步执行的是select语句的时候,才有本步)6.释放资源(使用完资源后一定要关闭资源,Java和数据库之间属于进程间的通信,开启之后一定要记得关闭)
3、JDBC的模糊查询:
import com.shujia.wyh.utils.MySqlTool;import java.sql.PreparedStatement;
import java.sql.ResultSet;/*模糊查询*/
public class JDBCDemo7 {public static void main(String[] args) throws Exception {String sql = "select ename from emp where ename like ?";PreparedStatement statement = MySqlTool.getStatement(sql);statement.setString(1, "%A%");ResultSet resultSet = statement.executeQuery();while (resultSet.next()){String name = resultSet.getString(1);System.out.println(name);}}
}

在使用maven连接mysql的时候,需要在poml文件中添加依赖:

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version>
</dependency>
 4、JDBC连接MySQL
/*1.注册驱动(告诉Java程序,即将连接的是哪个品牌的数据库)2.获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,使用完后记得关闭通道)。3.获取数据库操作对象(专门执行sql语句的对象)4.执行SQL语句(DQL,DML…)5.处理查询结果集 (只有当第四步执行的是select语句的时候,才有本步)6.释放资源(使用完资源后一定要关闭资源,Java和数据库之间属于进程间的通信,开启之后一定要记得关闭)*/import com.mysql.jdbc.Driver;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class JDBCDemo1 {public static void main(String[] args) throws Exception{//第一种连接方式// 1.注册驱动(告诉Java程序,即将连接的是哪个品牌的数据库)// jdk帮助文档中提供了一个类让我们去注册驱动 DriverManager//但是通过观察后发现,DriverManager类中并没有构造方法,就意味着无法创建对象//但是没关系,我们又观察发现,该类中的方法都是静态的,就意味着可以通过DriverManager类直接调用//静态方法注册驱动:static void registerDriver(Driver driver) 注册与给定的驱动程序 DriverManager 。//通过观察后又发现,registerDriver方法中需要传入一个实现了java.sql.Driver接口的实现类//而恰好我们引入的mysql驱动包中就有一个类实现了java.sql.Driver接口//mysql驱动包中正好有一个类Driver实现了java.sql.Driver的接口DriverManager.registerDriver(new Driver());//2.获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,使用完后记得关闭通道)。//static Connection getConnection(String url, String user, String password)//尝试建立与给定数据库URL的连接。/*** url: 统一资源定位符*      http/https: 都是从网络中请求资源*      jdbc:mysql: 是java连接mysql数据库的url前缀*      请求连接mysql数据库的ip地址:192.168.254.100*      端口号:3306 告诉连接驱动我们连接的是mysql服务*      告诉你要操作的数据库名:bigdata25*      useUnicode=True&characterEncoding=utf8** user: 登录mysql数据库的用户名 root** password: 登录mysql数据库的密码 123456*///mysql5.7之后,不建议用户直接与mysql服务连接,中间会有一个SSL令牌校验String url = "jdbc:mysql://192.168.254.100:3306/bigdata25?useUnicode=True&characterEncoding=utf8&useSSL=false";String user = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, user, password);System.out.println("=============数据库连接成功:"+conn);//3.获取数据库操作对象(专门执行sql语句的对象)Statement statement = conn.createStatement();//4.执行SQL语句(DQL,DML…)/***  在JDBC中 它将查询单独封装了一个方法,而其他的增删改单独一个方法**  用于查询的方法*  ResultSet executeQuery(String sql) 执行给定的SQL语句,该语句返回单个 ResultSet对象。**  用户增删改的方法* int executeUpdate(String sql) 执行给定的SQL语句,这可能是 INSERT , UPDATE ,或 DELETE语句,* 或者不返回任何内容,如SQL DDL语句的SQL语句。*///增加
//        String sql = "insert into student values('110','洪文霁','男',18,'95033')";
//        int i = statement.executeUpdate(sql);
//        if(i==1){
//            System.out.println("数据添加成功!。。。");
//        }else {
//            System.out.println("数据添加失败!!");
//        }//删除
//        String sql2 = "delete from student where sno='110'";
//        int i1 = statement.executeUpdate(sql2);
//        if(i1==1){
//            System.out.println("数据删除成功!。。。");
//        }else {
//            System.out.println("数据删除失败!!");
//        }//修改String sql3 = "update student set sage=19 where sno='110'";int i = statement.executeUpdate(sql3);if(i==1){System.out.println("数据修改成功!。。。");}else {System.out.println("数据修改失败!!");}//6.释放资源(使用完资源后一定要关闭资源,Java和数据库之间属于进程间的通信,开启之后一定要记得关闭)conn.close();}
}

第二种连接的方式:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;/*回顾一下,使用java操作数据库的6步1、注册驱动 我们上午学习的注册驱动是第一种方式借助于DriverManager类2、建立连接3、获取操作数据库的对象4、执行sql5、如果第四步是查询操作,分析查询的结果集6、释放资源,关闭连接*/
public class JDBCDemo2 {public static void main(String[] args) throws Exception {/***  上午呢,我们说到驱动包的时候,原本是java自己提供的一系列接口,然后不同的数据库厂商去实现这些接口*  最终提供了一个驱动包给到开发者,然后开发者拿到这个驱动包使用里面的类连接或操作数据库**  上午的注册驱动方式,是直接实例化mysql驱动包中的Driver类,但是我们今后使用java不一定只是连接mysql,还有可能操作redis等其他的数据库*  实际上我们最终是根据驱动包中的实现类路径来找到这个实现类的*  能否使用传路径的方式,注册驱动呢?**  第二种注册驱动的方式:驱动包中的类都是class文件,我们如果能够直接定位到实现类也可以*  使用反射的方式,定位到实现类,将实现类加载到内存*  Class.forName("com.mysql.jdbc.Driver")*/Class.forName("com.mysql.jdbc.Driver");//2.获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,使用完后记得关闭通道)。//mysql5.7之后,不建议用户直接与mysql服务连接,中间会有一个SSL令牌校验String url = "jdbc:mysql://192.168.254.100:3306/bigdata25?useUnicode=True&characterEncoding=utf8&useSSL=false";String user = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, user, password);System.out.println("=============数据库连接成功:"+conn);//3.获取数据库操作对象(专门执行sql语句的对象)Statement statement = conn.createStatement();//4.执行SQL语句(DQL,DML…)//修改String sql3 = "update student set sage=20 where sno='110'";int i = statement.executeUpdate(sql3);if(i==1){System.out.println("数据修改成功!。。。");}else {System.out.println("数据修改失败!!");}//6.释放资源(使用完资源后一定要关闭资源,Java和数据库之间属于进程间的通信,开启之后一定要记得关闭)conn.close();}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class JDBCDemo08 {public static void main(String[] args) throws Exception{//建立连接:需要指定用户的url地址和用户名和密码Connection conn = DriverManager.getConnection("jdbc:mysql://master/trip","root","123456");//获取mysql的操作对象Statement statement = conn.createStatement();String sql = "select * from activity  ";//执行sql语句:ResultSet resultSet = statement.executeQuery(sql);//获取里面的数据,并打印在控制台中,下表是从1开始的。while(resultSet.next()){int id = resultSet.getInt(1);String cid = resultSet.getString(2);String name = resultSet.getString(3);System.out.println(id+  "\t" + cid + name);}
conn.close();}
}
5、悲观锁和乐观锁的概念

事务1–>读取到版本号1.1

事务2—>读取到版本号1.1

其中事务1先修改了,修改之后看了版本号是1.1 ,于是提交修改的数据,将版本号修改为1.2 其中事务2后修改的,修改之后准备提交的时候,发现版本号是1.2 ,和它最初读的版本号不一致。回滚。

悲观锁:事务必须排队执行。数据锁住了,不允许并发。 (行级锁: select后面添加for update )

乐观锁:支持并发,事务也不需要排队,只不过需要一个版本号。

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

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

相关文章

业务系统上云后,如何满足员工移动办公快速访问业务系统的需求?

在企业业务上云的大趋势下&#xff0c;SaaS应用、云端办公协同工具等多种远程办公应用系统开始大规模普及&#xff0c;企业员工可以随时随地访问云上业务数据。然而现实情况却十分“打脸”&#xff0c;企业随时随地要访问云上业务的需求越迫切&#xff0c;问题就越大。由于多种…

算法通关村第十二关|白银|字符串经典基础面试题

1.反转问题 1.1 反转字符串 原题&#xff1a;力扣344. 要求原地修改。 public void reverseString(char[] s) {if (s null || s.length() 0) {return;}int n s.length;for (int left 0, right n - 1; left < right; left, right--) {char temp s[left];s[left] s…

小程序订阅消息

wx.requestSubscribeMessage({tmplIds: [2IdqlWrqSbjAurzIuW8imeK-ftS8gbhYdZ0icdE],success(res) {console.log(res);// 处理用户授权结果},fail(err) {console.error(err);// 处理授权请求失败}});

白杨SEO:2B企业营销是什么?当下主流的短视频直播平台有哪些?企业营销要做短视频直播选哪个平台更好?

今天白杨SEO就正式来讲讲2B企业营销选择哪个短视频直播平台更好&#xff1f; 图片在公众号&#xff1a;白杨SEO上看。 文章大纲提前看&#xff1a; 1、先说说2B企业营销是什么&#xff1f; 2、当下主流的短视频直播平台有哪些&#xff1f; 3、2B企业营销要做短视频直播选哪…

重磅!1区、60年老牌期刊被踢?共5本被剔除!11月SCIE/SSCI期刊目录更新!

期刊动态&#xff1a;2023年11月SCI、SSCI期刊目录更新 2023年11月20日&#xff0c;科睿唯安更新了WOS期刊目录&#xff0c;继上次10月WOS期刊目录剔除7本SCIE&SSCI期刊之后&#xff0c;此次11月更新又有5本期刊发生变动&#xff0c;其中有4本SCIE期刊被剔除&#xff0c;1…

Postgresql根据两表相同字段更新其中一个表的其他数据

有两个表 table1&#xff08;id,pcode,pname,type&#xff09; 初始数据只有id、pcode&#xff0c;pname、type为空table2&#xff08;id,pcode,pname,type&#xff09; 根据table1和table的相同字段pcode&#xff0c;用table2的数据更新table1的pname和type字段。 例如&…

微信运营神器:从群发到批量添加,让你的微信营销更轻松

在这个数字化时代&#xff0c;微信已经成为了我们生活中不可或缺的一部分。对于许多企业和个人来说&#xff0c;微信营销也是非常重要的一部分。但是&#xff0c;微信营销并不是一件容易的事情&#xff0c;需要花费大量的时间和精力。为了解决这个问题&#xff0c;今天我们将向…

Linux本地MinIO存储服务远程调用上传文件

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;…

淘宝返利APP草柴如何绑定淘宝账号?

草柴APP是一款淘宝、天猫、京东大额优惠券领取及购物返利省钱工具。通过草柴APP绑定淘宝账号&#xff0c;可领取淘宝大额内部隐藏优惠券&#xff0c;领取成功再购物可享券后价优惠&#xff0c;确认收货后可获得淘宝返利。 淘宝返利APP草柴如何绑定淘宝账号&#xff1f; 1、手…

Docker 快速搭建 Gitlab 服务

linux环境&#xff1a; 使用 vim 编辑 hosts 文件&#xff1a; vim /etc/hosts按 I 进入编辑模式&#xff0c;在文件末行追加上虚拟机的 IP 和要设置的域名&#xff1a; 192.168.1.17 gitlab.kunwu.toplwindows环境&#xff1a; Windows 系统的 hosts 文件位于 C:\Windows\S…

万宾科技智能井盖传感器效果,特点有哪些?

现在城市发展越来越好&#xff0c;对基础设施的改造越来越多&#xff0c;比如修路搭桥、整改生态等都是为民服务的好工程。平时走在路上我们享受着平整的路面&#xff0c;井然有序的交通也为我们带来很大的方便。但是一个又一个的井盖看起来无关紧要&#xff0c;实际上如果路上…

Doris的编译与安装(二)

安装 Doris&#xff0c;需要先通过源码编译&#xff0c;主要有两种方式&#xff1a; 使用 Docker 开发镜像编译&#xff08;推荐&#xff09;、直接编译。 直接编译的方式&#xff0c;可以参考官网&#xff1a;https://doris.apache.org/zh-CN/installing/compilation.html …

投标文件的注意事项

一、检查标书 1.1有时候标书需要从别的地方复制黏贴文件&#xff0c;记住复制内容可以&#xff0c;但是不要复制“落款和时间”的格式&#xff0c;落款和时间的格式借鉴你的招标文件中给响应文件格式的落款和时间&#xff0c;切记&#xff01; 1.2检查标书是否有空页&#xf…

数据科学导论——数据预处理

第1关:引言-根深之树不怯风折,泉深之水不会涸竭 第2关:数据清理-查漏补缺 import numpy as np import pandas as pd import matplotlib.pyplot as plt def student():train = pd.read_csv(Task1/diabetes_null.csv, na_values=[#NAME?])train[Insulin] = train[Insulin].f…

maxwell采集数据到kafka报错

问题&#xff1a; 启动maxwell后出现数据更新后就出现以下报错。 13:29:14,727 ERROR MaxwellKafkaProducer - TimeoutException Position[BinlogPosition[binlog.000002:12215591], lastHeartbeat1700717043797] -- maxWellData: medical:consultation:[(id,212)] 13:29:14,7…

Raptor安装

Raptor官网:https://raptor.martincarlisle.com/ 进入官网后&#xff0c;下拉找到 Download RAPTOR&#xff0c;windows系统的选择Windows Users 下载完成后打开&#xff0c;选择“next” 修改一下路径&#xff0c;不要放到C: 继续next 完结撒花

vue3的单组件的编写(三)【响应式 API 之 toRef 与 toRefs】

响应式 API 之 toRef 与 toRefs 前面讲了 ref 和 reactive 这两种响应式API &#xff0c;为了方便开发者使用&#xff0c;vue3 还出了两个用来 reactive 转换为 ref 的API&#xff0c;分别是 toRef 和 toRefs 。 &#x1f308;什么是toRef 与 toRefs 这两个API看拼写能猜到&…

css渐变详解(重复性线性渐变、径向渐变、重复性径向渐变的使用)

目录 线性渐变 重复性线性渐变 径向渐变 重复性径向渐变的使用 线性渐变 线性渐变是向下、向上、向左、向右、对角方向的颜色渐变。 其语法格式为&#xff1a; background-image: linear-gradient(side-or-corner|angle, linear-color-stop); 参数说明如下&#xff1a; …

物联网网关在智慧农业行业的应用案例

物联网网关在智慧农业行业的应用案例 随着科技的发展和普及&#xff0c;智慧农业已经成为了农业领域的一个重要趋势。在智慧农业中&#xff0c;物联网网关是一个非常重要的组成部分&#xff0c;它能够实现对农业设备和环境的实时监控和控制&#xff0c;从而提高农业生产效率和…

服务器不备案的影响

服务器不备案的影响 不备案&#xff0c;不能解析域名。 但凡你的域名绑定到的是国内地址&#xff0c;你不备案&#xff0c;这个域名解析未来就可能会失效。 &#xff08;你借用的其它网站的子域名情况除外&#xff0c;因为他们的网站本身主域名有可能已经备案。&#xff09; …