Javaweb-JDBC
JDBC
什么是JDBC
JDBC(Java DataBase Connectivity)是Java和数据库之间的一个桥梁,是一个规范而不是一个实现,能够执行SQL语句。它由一组用Java语言编写的类和接口组成。各种不同类型的数据库都有相应的实现
IDEA连接数据库
1.添加maven依赖
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
2.实现MySQL的连接
3.java代码实现
package com.wang;
import java.sql.*;
public class test {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//配置信息
String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true";
String username="root";
String password="123456";
//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//连接数据库
Connection connection = DriverManager.getConnection(url, username, password);
//向数据库发送SQL的对象Statement:增删改查
Statement statement = connection.createStatement();
//编写SQL
String sql="select * from user";
//执行sql,返回一个结果集
ResultSet resultSet = statement.executeQuery(sql);
while ((resultSet.next()))
{
System.out.println("id+"+resultSet.getObject("id"));
System.out.println("name+"+resultSet.getObject("NAME"));
System.out.println("password+"+resultSet.getObject("PASSWORD"));
System.out.println("email+"+resultSet.getObject("email"));
}
//关闭连接释放资源
resultSet.close();
statement.close();
connection.close();
}
}
4.增删改返回的是int型,用executeupdate
5.采用预编译经行sql操作更加完善更加安全
package com.wang;
import java.sql.*;
public class test02 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//配置信息
String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true";
String username="root";
String password="123456";
//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//连接数据库
Connection connection = DriverManager.getConnection(url, username, password);
//编写sql
String sql="insert into jdbc.user(id, NAME, PASSWORD, email) VALUES (?,?,?,?)";
//预编译
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1,4);
preparedStatement.setString(2,"jinnice");
preparedStatement.setString(3,"113456");
preparedStatement.setString(4,"jinnice@qq.com");
//执行SQL
int i = preparedStatement.executeUpdate();
if(i>=1)
{
System.out.println("成功");
}
//关闭连接释放资源
preparedStatement.close();
connection.close();
}
}
插入成功
事务
要么都成功要么都失败
原子性 一致性 隔离性 持久性
开启事务
事务提交
事务回滚
关闭事务
@Test只有在方法上有效
自动提交关闭,事务就会开启
connection.setAutoCommit(false);//自动提交关闭,事务就会开启
源码
package com.wang;
import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class test03 {
@Test
public void text() throws ClassNotFoundException, SQLException {
//配置信息
String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true";
String username="root";
String password="123456";
Connection connection=null;
//加载驱动
try {
Class.forName("com.mysql.cj.jdbc.Driver");
//连接数据库
connection = DriverManager.getConnection(url, username, password);
//通知数据库开启事务
connection.setAutoCommit(false);//自动提交关闭,事务就会开启
String sql1 = "update jdbc.money set money=money-100 where NAME='A'";
connection.prepareStatement(sql1).executeUpdate();
String sql2 = " update jdbc.money set money=money+100 where NAME='B'";
connection.prepareStatement(sql2).executeUpdate();
connection.commit();
System.out.println("success");
}catch (Exception e){
try {
connection.rollback();
}catch(SQLException e1)
{
e1.printStackTrace();
}
e.printStackTrace();
}finally {
connection.close();
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?