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();
        }
    }
}
posted @ 2022-09-03 21:55  jinnice  阅读(17)  评论(0编辑  收藏  举报