JDBC的介绍以及使用

一、JDBC的概述

规范!!!
Sun公司制定的通过java来连接数据库的标准规范,而且要求数据库的提供商解决 连接和操作的问题。
JDK:
​ java.sql
​ javax.sql
如果想要操作数据的类,必须下载第三方jar包
mysql-connector-java-5.1.47.jar
如何下载第三方jar包:
​ 1.百度输入maven
​ 2.点击第一个网址https://mvnrepository.com/
​ 3.进来以后输入mysql进行查询
​ 4.找到5.1.47这个版本点击小手下载即可

二、MySQL数据库连接需要的参数

cmd> mysql -hlocalhost -uroot -p123456
​ 1.确定连接数据是哪一个。mysql
​ 2.确定连接数据库是在哪一个主机上面,数据库的服务器的地址
​ 3.当前数据库的用户名
​ 4.对应用户名密码
JDBC的URL=协议名+子协议名+数据源名。
a 协议名总是“jdbc”。
b 子协议名由JDBC驱动程序的编写者决定。
c 数据源名也可能包含用户与口令等信息;这些信息也可单独提供。
几种常见的数据库连接
-------------------------------oracle------------------
驱动:oracle.jdbc.driver.OracleDriver
URL:jdbc:oracle:thin:@machine_name:port:dbname
注:machine_name:数据库所在的机器的名称;
port:端口号,默认是1521
-------------------------------mysql-------------------
驱动:com.mysql.jdbc.Driver
URL:jdbc:mysql://machine_name:port/dbname
注:machine_name:数据库所在的机器的名称;
port:端口号,默认3306
--------------------------SQL Server------------------
驱动:com.microsoft.jdbc.sqlserver.SQLServerDriver
URL:jdbc:microsoft:sqlserver://<machine_name><:port>;DatabaseName=
注:machine_name:数据库所在的机器的名称;
port:端口号,默认是1433
--------------------------DB2--------------------------
驱动:com.ibm.db2.jdbc.app.DB2Driver
URL:jdbc:db2://<machine_name><:port>/dbname
注:machine_name:数据库所在的机器的名称;
port:端口号,默认是5000

1.驱动:com.mysql.jdbc.Driver
2.目前适用的url是:
​ jdbc:mysql://localhost:3306/java2102(数据库名)
3.需要对应的用户名字和密码

三、JDBC核心的API()

java.sql.Driver 接口
–|connect(String url, Properties prop);
​ url:java连接数据的url的协议
​ prop:java连接数据库所需要的属性,通常保存在一个文件中,读取对应的文件。
​ root password 等

java.sql.Drivermanager类
​ --|static regiterDriver(java.sql.Driver driver);
​ 用来注册驱动的,需要的参数是java.sql.Driver接口实现的类对象
​ --|static java.sql.Connection getConnection(String url, String user, String password);
​ 获取数据库连接对象的方法
​ url:JDBC连接数据库所需要的协议
​ user:数据库所需要的用户名
​ password:数据库所需要的密码

java.sql.Connection接口
​ --|java.sql.Statement createStatement();
​ 获取一个叫statement对象,这个对象叫数据库sql语句的搬运工,直接搬到数据库中运行你这个sql语句。也是一个资源型的对象,也是需要关闭的
​ --|java.sql.PreparedStatement preparedStatement();
​ 这个对象也是数据库sql语句搬运工,只不过是预处理了一下。防止sql注入。

java.sql.Statement 接口
​ --|int excuteUpdate(String sql );
​ 执行传入的sql语句,主要执行的sql语句有增,删,改。返回值是int类型
​ 受影响的行数

java.sql.Resultset excuteQuery(String sql);
​ 执行传入的sql语句,主要执行的是查询(select),返回值是一个java.sql.Result这个结果集对象
interface java.sql.PrepareStatement extends java.sql.statement
​ --|int executeUpdate();
​ 执行预处理的sql语句,主要执行的sql语句,有增删改,返回值是int类型的数据,受影响的行数。

​ --|setXXX(int index, Object obj);
​ sql语句是用?占位的,没有实际的值,set方法专门给?赋值的
​ index是下标,从1开始
​ obj 是参数值 代替?的

java.sql.ResultSet 接口
​ resultSet也是一个资源型的数据,需要close
​ --|boolean next();======>hasNext();
​ 判断是否还可以继续遍历下面的数据
​ --|getXXX(int columnIndex);
​ xxx表示是数据类型,可以根据下标的位置获取对应的字段的数据
​ --|getxxx(String filename);
​ xxx表示是数据类型,可以根据字段的名字

四、借助于JDBC,java程序连接mysql数据库进行增、删、改、查

首先创建一个数据库javaday25
创建表student
create table student(
-> id int primary key auto_increment,
-> name varchar(30) not null,
-> age int not null,
-> info varchar(30)
-> );

需要在项目中导第三方jar包
​ 1.在项目新建一个文件夹叫lib
​ 2.复制对应的jar包到lib文件中
​ 3.在jar包鼠标右键,add as library
在这里插入图片描述

写一个文件叫db.properties,放在src文件夹下面
diver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/数据库名?useSSL=false
user=root
password=123456
在这里插入图片描述

JdbcUtil.java
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;

/**
 * @author xue_yun_xiang
 * @create 2021-03-29-8:48
 */
public class JdbcUtil {
    private static String driverClass = null;
    private static String url = null;
    private static String user = null;
    private static String password = null;

    //使用静态代码块完成驱动的自动加载
    static {
        try {
        //1、创建对象properties
        Properties properties = new Properties();
        //2、使用load 加载src下面的文件
            properties.load(new FileInputStream("./src/db.properties"));
        //3、从properties这个对象中取出来对应的属性
            driverClass = properties.getProperty("driver");
            url = properties.getProperty("url");
            user = properties.getProperty("user");
            password = properties.getProperty("password");
        //4.加载驱动
            Class.forName(driverClass);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    //getConnection
    public static Connection getConnection() throws SQLException {
        Connection connection = null;
        connection = DriverManager.getConnection(url,user,password);
        return connection;
    }
    //完成统一的close方法
    public static void close(Connection connection) {
        close(connection,null,null);
    }
    public static void close(Connection connection, Statement statement) {
        close(connection,statement,null);
    }
    public static void close(Connection connection,Statement statement,ResultSet resultSet) {
        try {
            if (connection != null) {
                connection.close();
            }
            if (statement != null) {
                statement.close();
            }
            if (resultSet != null) {
                resultSet.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}

增、删、改:

Demo1.java
import org.junit.Test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * @author xue_yun_xiang
 * @create 2021-03-29-9:17
 */
public class Demo1 {

    //增
    @Test
    public void addTest() throws SQLException {
        Connection connection = JdbcUtil.getConnection();

        //1.准备sql语句
        String sql = "insert into student(name,age,info) values('张三',88,'老色皮')";

        //2.创建搬运工
        PreparedStatement preparedStatement = connection.prepareStatement(sql);

        //3.执行sql语句,返回影响的行数
        int i = preparedStatement.executeUpdate();
        System.out.println(i);
        //4.关闭
        JdbcUtil.close(connection,preparedStatement);
    }


    //删
    @Test
    public void deleteTest() throws SQLException {
        Connection connection = JdbcUtil.getConnection();

        String sql = "delete from student where id = 4";

        PreparedStatement preparedStatement = connection.prepareStatement(sql);

        int i = preparedStatement.executeUpdate();
        System.out.println(i);

        JdbcUtil.close(connection,preparedStatement);
    }

    //改
    @Test
    public void updateTest() throws SQLException {
        Connection connection = JdbcUtil.getConnection();

        String sql = "update student set name = '李凯馨',age = 22,info = '女神' where id = 1";

        PreparedStatement preparedStatement = connection.prepareStatement(sql);

        int i = preparedStatement.executeUpdate();
        System.out.println(i);

        JdbcUtil.close(connection,preparedStatement);
    }
}

查:

Student.java
public class Student {
    private int id;
    private String name;
    private int age;
    private String info;

    public Student() {

    }

    public Student(int id, String name, int age, String info) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.info = info;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", info='" + info + '\'' +
                '}';
    }
}
Demo1.java
//查
public class Demo1 {
    @Test
    public void selectTest() throws SQLException {
        Connection connection = JdbcUtil.getConnection();

        String sql = "select * from student";

        PreparedStatement preparedStatement = connection.prepareStatement(sql);

        ResultSet resultSet = preparedStatement.executeQuery();

        List<Student> students = new ArrayList<Student>();

        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String name = resultSet.getString(2);
            int age = resultSet.getInt(3);
            String info  =resultSet.getString(4);

            students.add(new Student(id,name,age,info));
        }

        for (Student student : students) {
            System.out.println(student);
        }

        JdbcUtil.close(connection,preparedStatement,resultSet);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值