zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

【JDBC】使用IDEA连接数据库,执行增删改操作。

IDEA数据库执行连接JDBC 使用 操作 增删
2023-06-13 09:15:10 时间

CSDN话题挑战赛第2期 参赛话题:学习笔记

JDBC专栏

【1】idea添加mysql-jar包 【2】使用IDEA连接数据库,执行增删改操作。 【3】IDEA连接数据库,执行查询操作,返回结果集并输出。


连接数据库,执行更新


前言

JDBC是一个Java与数据库通信的规范(接口),各大数据库厂商会去实现JDBC规范(实现类),而上一篇文章提到的jar 包就是包含各种实现类的压缩包。

这篇文章,我将介绍如何尝试利用JDBC规范来连接数据库,对数据库进行更新操作。


一、连接数据库

1.加载驱动

        Class.forName("com.mysql.jdbc.Driver");

com.mysql.jdbc.Driver:是JDBC驱动程序,是用于实现JDBC接口的一组Java类

2.通过驱动管理器连接对象

在这一步,我们需要准备三样东西 URL ,账户用户名,密码 URL:表示跟数据库通信的地址。 用户名:自然就是拥有数据库权限的账户了,这里使用根用户root。 密码:登录数据库需要用户名及对应的密码。

图片是MySQL数据库的登录界面,正需要用户名与密码

使用JDBC连接数据库相比直接在数据库应用上连接,需要额外确定需要建立通信的数据库的地址,这样才能建立连接。

准备URL

String url = "jdbc:mysql://localhost:3306/fruitdb";

jdbc:mysql:// 是通信地址的固定开头格式 localhost:3306/ 代表本地连接,3306则是MySQL数据库的默认端口号 后面的就是我创建的其中一个DataBase名称

准备用户名与密码

        String user = "root";//用户名为root
        String psw = "";     //password填写对应用户的密码即可

使用数据库管理器连接

Connection conn = DriverManager.getConnection(url, user, psw);

整合:

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

/**
 * @author .29.
 * @create 2022-09-15 21:49
 */
public class Demo02 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1.加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/fruitdb";
        String user = "root";
        String psw = ""
        Connection connection = Connection conn = DriverManager.getConnection(url, user, psw);
    }
}

二、执行更新

1.编写SQL语句

在编写SQL语句之前,我们先来了解一下,URL地址中数据库的内容:

以下是数据库中的操作:

USE fruitdb;
SELECT * FROM t_fruit;

这就是Database:fruitdb中表t_fruit的内容。

接下来就是在IDEA中编写SQL语句,对表进行更新操作了。

String sql = "insert into t_fruit values(9,?,?,?,?)";

values()中的 ?代表还未指定内容

insert into t_fruit values(…)是添加操作; 还可以使用其他的SQL语言: 如: 更新:update t_fruit set price = 100 where fname = ‘榴莲’ 删除:delete from t_fruit where fid = 8 等…

2.创建预处理命令对象PreparedStatement()

PreparedStatement psmt = connection.prepareStatement(sql);

3.填充内容参数

上文的SQL语句中,我们用 ?替代了参数,这里进行内容的填充:(下标 ,内容)

        psmt.setString(1,"石榴");
        psmt.setInt(2,8);
        psmt.setInt(3,64);
        psmt.setString(4,"石榴,在广东也可以叫鸡屎果");

4.执行更新executeUpdate(),关闭资源close()

        //执行更新,返回影响行数i
        int i = psmt.executeUpdate();
        //i > 0说明影响行数大于一,即更新成功
        System.out.println(i > 0 ? "添加成功":"添加失败");
        //关闭资源
        psmt.close();
        connection.close();

关闭资源时,先关闭预处理对象psmt(PreparedStatement),再关闭连接(connection)。

三、执行,检查

完整代码:

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

/**
 * @author .29.
 * @create 2022-09-15 21:49
 */
public class Demo02 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/fruitdb";
        String user = "root";
        String psw = ""
        Connection connection = Connection conn = DriverManager.getConnection(url, user, psw);
        //id,fname,price,fcount,remark
        String sql = "insert into t_fruit values(9,?,?,?,?)";
        //4.创建预处理命令对象
        PreparedStatement psmt = connection.prepareStatement(sql);
        //5.填充参数
        psmt.setString(1,"石榴");
        psmt.setInt(2,8);
        psmt.setInt(3,64);
        psmt.setString(4,"石榴,在广东也可以叫鸡屎果");
        //6.执行更新(增删改),返回影响行数
        int i = psmt.executeUpdate();
        System.out.println(i > 0 ? "添加成功":"添加失败");
        //7.释放资源(关闭连接,先关闭psmt,再关闭connection)
        psmt.close();
        connection.close();
    }
}

执行结果:

让我们检查一下数据库:

结果确实是添加成功了。

乱码

如果遇到乱码,通常都是字符集的设置问题,可以尝试在URL地址中设置使用的字符集: ?useUnicode=true&characterEncoding=utf-8

        //通过驱动管理器连接对象
        //url表示跟数据库通信的地址
        //如果url中需要带参数,使用?连接
        //如果需要带多个参数,第二个参数开始用&连接
String url = "jdbc:mysql://localhost:3306/fruitdb?useUnicode=true&characterEncoding=utf-8";
String user = "root";
String psw = ""
Connection connection = Connection conn = DriverManager.getConnection(url, user, psw);