JDBC_API

105 阅读2分钟

DriverManager

1、注册驱动

Class.forName("com.mysql.jdbc.Driver");//因为Driver自动为我们调用了DriverManger.registerDriver(new Driver());

image.png

2、获取连接

Driver.getconnection(url,username,password);

参数:

1、url的连接路径

image.png 2、username:用户名 3:password:密码

connection

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

1、获取执行SQL的对象

  • 获取执行普通SQL对象

Statement state = conn.createStatement();//用户数据库连接对象.createStatement

  • Statement作用:执行SQL

image.png int executeUpdate(sql):执行DML(对数据的增删改操作)DDL(对数据库和表的增删改查操作) 返回值:(1)DML语句影响行数(2)DDL语句执行后,执行成功也可能返回0

代码演示
package com.JDBC;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class JDBC_Dame {
    public static void main(String[] args) throws Exception {
       String url = "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";
       String username = "root";
       String password = "1234";
        Connection conn = DriverManager.getConnection(url, username, password);//获取数据库连接
        String sql1 = "update account set money = money + 50000 where id = 1";
        Statement state = conn.createStatement();//获取执行SQL对象
        int i = state.executeUpdate(sql1);//返回受影响的行数
    }
}

image.png

image.png

ResultSet executeQuery(sql):执行DQL(对数据的查询操作) 返回值:ResultSet结果集对象

代码演示
package com.JDBC;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class JDBC_Dame {
    public static void main(String[] args) throws Exception {
        List<Account> accounts = new ArrayList<>();
       String url = "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";
       String username = "root";
       String password = "1234";
        Connection conn = DriverManager.getConnection(url, username, password);//获取数据库连接
        Statement stat = conn.createStatement();//获取执行对象
        String sql = "select * from account";
        ResultSet rs = stat.executeQuery(sql);//执行SQL
        Account acc = null;
        while(rs.next()){
            acc = new Account();
            acc.setId(rs.getInt("id"));//获取id的值并封装成对象
            acc.setName(rs.getString("name"));//获取name的值并封装成对象
            acc.setMoney(rs.getDouble("money"));//获取money的值并封装成对象
            accounts.add(acc);//将Account对象存入集合中
        }
        System.out.println(accounts);
    }
}
  • 获取预编译SQL的执行SQL对象:防止SQL注入 PreparedStatement pre = conn.preparedStatement(sql);//用户数据库连接对象.preparedStatement(sql)

image.png

image.png

image.png

代码演示
package com.JDBC;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

public class JDBC_Dame {
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        String url = "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";
        String username = "root";
        String password = "1234";
        Connection conn = DriverManager.getConnection(url,username,password);
        System.out.println("请输入用户名");
        String name = sc.nextLine();
        System.out.println("请输入密码");
        String paw = sc.nextLine();
        String sql = "select * from login where username = ? and password = ?";
        PreparedStatement ps = conn.prepareStatement(sql);//获取PreparedStatement对象
        ps.setString(1,name);//设置参数值
        ps.setString(2,paw);
        ResultSet rs = ps.executeQuery();//执行SQL
        if(rs.next()){
            System.out.println("登入成功");
        }else{
            System.out.println("登入失败");
        }

    }
}

2、管理事务

image.png

  • 代码演示
package com.JDBC;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBC_Dame {
    public static void main(String[] args) throws Exception {
       String url = "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";
       String username = "root";
       String password = "1234";
        Connection conn = DriverManager.getConnection(url, username, password);//获取数据库连接
        String sql1 = "update account set money = money + 50000 where id = 1";
        String sql2 = "update account set money = money - 50000 where id = 2";
        Statement state = conn.createStatement();//获取执行SQL对象
        try {
            conn.setAutoCommit(false);//开启事务
            state.executeUpdate(sql1);//执行SQL
            state.executeUpdate(sql2);
            conn.commit();//提交事务
        } catch (Exception e) {
            conn.rollback();//出现异常 回滚事务
            throw new RuntimeException(e);
        }
    }
}