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

【web】JDBC

项目连接数据库

右侧导航栏找到databsae

如果没有驱动,先下载驱动

填写数据库用户名密码

勾选对应的表即可

JDBC代码流程

1,配置信息

2,加载驱动   从MySQL Connector/J 5.1版本开始,推荐使用com.mysql.cj.jdbc.Driver这个新的驱动类。

3,链接数据库

4,向数据库发送SQL的对象statement:CURD

5,编写sql

6,执行查询SQL,返回一个ResultSet  结果集

7,关闭链接,释放资源  一定要做,先开的后关

代码流程如下:

public class TestIdbc {public static void main(String[] args) throws ClassNotFoundException, SQLException {//配置信息//useUnicode=ture&characterEncoding=utf-8解决中文乱码问题String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=ture&characterEncoding=utf-8";String username="root";String password="123456";//1,加载驱动   从MySQL Connector/J 5.1版本开始,推荐使用com.mysql.cj.jdbc.Driver这个新的驱动类。Class.forName("com.mysql.cj.jdbc.Driver");//2,链接数据库Connection cnno= DriverManager.getConnection(url,username,password);//3,向数据库发送SQL的对象statement:CURDStatement sta=cnno.createStatement();//4,编写sqlString sql="select * from user";//5,执行查询SQL,返回一个ResultSet  结果集ResultSet rs=sta.executeQuery(sql);//4,编写sql// String sql="update user set name='张三' where id=1";//5,执行查询SQL,返回一个int 修改的数据条数// int rs=sta.executeUpdate(sql);while (rs.next()){System.out.println("id="+rs.getObject("id"));System.out.println("name="+rs.getObject("name"));System.out.println("password="+rs.getObject("password"));System.out.println("age="+rs.getObject("age"));System.out.println("address="+rs.getObject("address"));}//6,关闭链接,释放资源  一定要做,先开的后关rs.close();sta.close();cnno.close();}

预编译sql 

public class TestIdbc2 {public static void main(String[] args) throws ClassNotFoundException, SQLException {//配置信息//useUnicode=ture&characterEncoding=utf-8解决中文乱码问题String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=ture&characterEncoding=utf-8";String username="root";String password="123456";//1,加载驱动   从MySQL Connector/J 5.1版本开始,推荐使用com.mysql.cj.jdbc.Driver这个新的驱动类。Class.forName("com.mysql.cj.jdbc.Driver");//2,链接数据库Connection cnno= DriverManager.getConnection(url,username,password);//3,编写sqlString sql="insert into user(id,name,password,address,age,eamil) values (?,?,?,?,?,?)";//4,预编译PreparedStatement preparedStatement= cnno.prepareStatement(sql);preparedStatement.setInt(1,3);//给第一个占位符?的赋值为1preparedStatement.setString(2,"我们");//给第二一个占位符?的赋值为1preparedStatement.setString(3,"12345");preparedStatement.setString(4,"成都");preparedStatement.setString(5,"18");preparedStatement.setString(6,"11.qq.com");//5,执行sqlint i=preparedStatement.executeUpdate();if(i > 0){System.out.println("成功");}//6,关闭链接,释放资源  一定要做,先开的后关preparedStatement.close();cnno.close();}
}

JDBC事务 

 ACID原则:保证数据的安全性,要么都成功,要么都不成功

开启事务 start transaction;

事务提交 commit()

事务回滚 rollback()

关闭事务

单元测试依赖junit

    <!--单元测试  方法上加@Test即可运行测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency>

事务案例

public class TestIdbc3 {public static void main(String[] args){//配置信息//useUnicode=ture&characterEncoding=utf-8解决中文乱码问题String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=ture&characterEncoding=utf-8";String username="root";String password="123456";Connection cnno = null;try {//1,加载驱动   从MySQL Connector/J 5.1版本开始,推荐使用com.mysql.cj.jdbc.Driver这个新的驱动类。Class.forName("com.mysql.cj.jdbc.Driver");//2,链接数据库cnno= DriverManager.getConnection(url,username,password);//通知数据库开启是事务cnno.setAutoCommit(false);//3,编写sqlString sql="update account set money = money-100 where name='A'";// 执行sqlcnno.prepareStatement(sql).executeUpdate();//制造错误int i=1/0;String sql2="update account set money = money+100 where name='B'";// 执行sqlcnno.prepareStatement(sql2).executeUpdate();cnno.commit();} catch (Exception e) {try {//如果出现异常,通知数据库回滚cnno.rollback();} catch (SQLException throwables) {throwables.printStackTrace();}e.printStackTrace();}finally {//6,关闭链接,释放资源  一定要做,先开的后关try {cnno.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}
}

http://www.lryc.cn/news/464265.html

相关文章:

  • MATLAB代码介绍:一段轨迹的指纹定位,KNN,三维,四个锚点(附源代码,可复制粘贴)
  • XML Schema 复合空元素
  • Java面向对象编程基础(二)
  • [PHP]重复的Notice错误信息
  • 2024年第四届“网鼎杯”网络安全大赛-赛前模拟训练
  • AI金融攻防赛:YOLO理论学习及赛题进阶思路(DataWhale组队学习)
  • Spring Security 基础配置详解(附Demo)
  • 代码随想录打卡Day1
  • Vue快速创建工程+Element Plus
  • 汽车管理系统——主界面制作
  • C++ 右值引用深入理解:特性、优化与底层
  • C# 文件操作
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发三 :安装QT5.14.2, 并将QT集成 到 VS2019中。
  • Linux 累加计算递归算法汇编实现
  • 明日周刊-第23期
  • kubernets(二)
  • 《YOLO 标注工具全览》
  • 财富思维学习
  • python爬虫加解密分析及实现
  • 用Java做智能客服,基于私有知识库
  • 软考(网工)——网络安全
  • 如何给手机换ip地址
  • kafkamanager安装
  • 笔记本电脑U口保护分享
  • OpenCV高级图形用户界面(20)更改窗口的标题函数setWindowTitle()的使用
  • 结构体指针的初始化以及结构体变量作为函数实参传递时易混淆的知识点
  • Github 2024-10-20 php开源项目日报Top10
  • C++ 算法学习——1.3 双向深度优先搜索
  • Artistic Oil Paint 艺术油画着色器插件
  • 记一次left join联表查询的索引失效场景