连接数据库和简单操作数据库

文章详细介绍了通过Java的JDBCAPI连接MySQL数据库的五种方法,包括注册驱动、获取连接、执行SQL以及释放资源等步骤。此外,还展示了如何创建Actor表,并提供了配置文件内容和实际的数据库操作示例,如插入数据到Actor表。
摘要由CSDN通过智能技术生成

JDBC程序编写步骤

1.注册驱动-加载Driver类
2.获取连接-得到Connection
3.执行增删改查-发送SQL给mysql执行
4.释放资源-关闭相关连接

创建一个演员表

首先在数据库(我的数据库是yjg_db03)里面创建一个actor表。通过JDBC进行添加,删除和修改操作。

-- 创建测试表,演员表
CREATE TABLE actor (
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR (32) NOT NULL DEFAULT '',
sex CHAR(1) NOT NULL DEFAULT '女',
borndate DATETIME,
phone VARCHAR(12)
);

数据库下的演员表

在这里插入图片描述

数据库表的连接

前置工作

在项目下创建一个文件夹 libs
将 mysql.jar 拷贝到该目录下,点击 add to project …加入到项目中

在这里插入图片描述

五种连接方式

import com.mysql.jdbc.Driver;
import org.junit.jupiter.api.Test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

/**
 * @author yjg
 * @version 1.0
 * java 连接mysql的5中方式
 */
public class JdbcConn {
    //方式1
    @Test
    public void connect01() throws SQLException {
         //创建driver对象
        Driver driver = new Driver();
        String url = "jdbc:mysql://localhost:3306/yjg_db03";
        //将用户名和密码放入到Properties 对象
        Properties properties = new Properties();
        //说明 user 和 password 是规定好,后面的值根据实际情况写
        properties.setProperty("user", "root");// 用户
        properties.setProperty("password", "yjg"); //密码
        Connection connect = driver.connect(url, properties);
        System.out.println(connect);
    }

    //方式2
    @Test
    public void connect02() throws Exception {
        //使用反射加载Driver类 , 动态加载,更加的灵活,减少依赖性
        Class<?> aClass = Class.forName("com.mysql.jdbc.Driver");
        //newInstance():创建一个实列,只能调用默认的构造器
        //x.getClass.newInstance(),创建了一个同x一样类型的新实例。
        // newinstance()方法调用默认构造器(无参数构造器)初始化新建对象。
        Driver driver = (Driver)aClass.newInstance();

        String url = "jdbc:mysql://localhost:3306/yjg_db03";
        //将 用户名和密码放入到Properties 对象
        Properties properties = new Properties();
        //说明 user 和 password 是规定好,后面的值根据实际情况写
        properties.setProperty("user", "root");// 用户
        properties.setProperty("password", "yjg"); //密码

        Connection connect = driver.connect(url, properties);
        System.out.println("方式2=" + connect);

    }

    //方式3 使用DriverManager 替代 driver 进行统一管理
    @Test
    public void connect03() throws Exception {

        //使用反射加载Driver
        Class<?> aClass = Class.forName("com.mysql.jdbc.Driver");
        Driver driver = (Driver) aClass.newInstance();
        //创建url 和 user 和 password
        String url = "jdbc:mysql://localhost:3306/yjg_db03";
        String user = "root";
        String password = "yjg";
        //向 DriverManager 注册给定驱动程序。新加载的驱动程序类应该调用 registerDriver 方法让 DriverManager 知道自己。
        //注册Driver驱动
        DriverManager.registerDriver(driver);
        //试图建立到给定数据库 URL 的连接。DriverManager 试图从已注册的 JDBC 驱动程序集中选择一个适当的驱动程序。
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println("第三种方式=" + connection);
    }

    //方式4: 使用Class.forName 自动完成注册驱动,简化代码
    //这种方式是使用的最多
    @Test
    public void connect04() throws ClassNotFoundException, SQLException {
        //使用反射加载了 Driver类
        //在加载 Driver类时,完成注册
        /*在源码中:
            1. 静态代码块,在类加载时,会执行一次.
            2. DriverManager.registerDriver(new Driver());
            3. 因此注册driver的工作已经完成
            static {
                try {
                    DriverManager.registerDriver(new Driver());
                } catch (SQLException var1) {
                    throw new RuntimeException("Can't register driver!");
                }
            }
         */
        Class.forName("com.mysql.jdbc.Driver");
        //创建url 和 user 和 password
        String url = "jdbc:mysql://localhost:3306/yjg_db03";
        String user = "root";
        String password = "yjg";
        Connection connection = DriverManager.getConnection(url, user, password);

        System.out.println("第4种方式~ " + connection);

    }

    //方式5 , 在方式4的基础上改进,增加配置文件,让连接mysql更加灵活
    @Test
    public void connect05() throws IOException, ClassNotFoundException, SQLException {

        //通过Properties对象获取配置文件的信息
        Properties properties = new Properties();
        //从输入流中读取属性列表(键和元素对)。
        properties.load(new FileInputStream("src\\mysql.properties"));
        //获取相关的值
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String driver = properties.getProperty("driver");
        String url = properties.getProperty("url");
        Class.forName(driver);
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println("方式5 "+ connection);
    }

}

方式五的配置文件

在src目录下创建一个文件,文件名是mysql.properties
在这里插入图片描述

配置文件里面的内容

1.得到与那个数据库的连接url
2.数据库的用户名user
3.数据库的密码password
4.需要的驱动driver
在这里插入图片描述

通过JDBC进行对actor表操作。

package com.h_edu.jdbc;
import com.mysql.jdbc.Driver;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

// 这是Jdbc 程序,完成简单的操作
public class Jdbc01 {
    public static void main(String[] args) throws SQLException {
        //1. 注册驱动
        //创建driver对象
        Driver driver = new Driver(); 
        //2. 得到连接
        //(1) jdbc:mysql:// 规定好表示协议,通过jdbc的方式连接mysql
        //(2) localhost 主机,也可以是ip地址
        //(3) 3306 表示mysql监听的端口
        //(4)yjg_db03 连接到mysql dbms 的哪个数据库
        //(5) mysql的连接本质就是socket连接
        String url = "jdbc:mysql://localhost:3306/yjg_db03";
        //将用户名和密码放入到Properties 对象
        Properties properties = new Properties();
        //user 和 password 是规定好,后面的值根据实际情况写
        //调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。强制要求为属性的键和值使用字符串。
        //返回值是 Hashtable 调用 put 的结果。
        properties.setProperty("user", "root");// 用户
        properties.setProperty("password", "yjg"); //密码
        //试图创建一个到给定 URL 的数据库连接。
        Connection connect = driver.connect(url, properties);

        //3. 执行sql
        String sql = "insert into actor values(null, '王大牛', '男', '1970-11-11', '110')";
        //String sql = "update actor set name='周星驰' where id = 1";
        //String sql = "delete from actor where id = 1";
        //statement 用于执行静态SQL语句并返回其生成的结果的对象
        //创建一个 Statement 对象来将 SQL 语句发送到数据库。不带参数的 SQL 语句通常使用 Statement 对象执行。
        // 如果多次执行相同的 SQL 语句,使用PreparedStatement更有效。
        Statement statement = connect.createStatement();
        //执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。
        int rows = statement.executeUpdate(sql); // 如果是 dml语句,返回的就是影响行数

        System.out.println(rows > 0 ? "成功" : "失败");

        //4. 关闭连接资源
        //立即释放此 Statement 对象的数据库和 JDBC 资源,而不是等待该对象自动关闭时发生此操作。
        statement.close();
        //立即释放此 Connection 对象的数据库和 JDBC 资源,而不是等待它们被自动释放。
        connect.close();

    }
}

ideal执行后的结果

在这里插入图片描述

数据库actor表结果

操作数据库成功,数据库的演员表中插入了王大牛这条记录。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yjg_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值