用Java连接MySQL数据库的总结

✨个人主页: 不漫游-CSDN博客

前言

在日常开发中,使用Java连接MySQL数据库是一个常见的任务,涉及多个步骤。接着我就带着大家细细看来~

一.下载.jar 包文件

1.什么是.jar 文件

通俗点讲就是一个压缩包,不过里面存放的都是由Java代码编译形成的.class二进制字节码文件.

咱们可以通过Java的第三方库进行下载--->https://mvnrepository.com

记得看清楚MySQL版本,下好自己对应的即可。

二.把.jar包文件导入到自己的Java项目中去

1.在项目处创建一个目录,注意名字不要出现中文或特殊符号。

2.把.jar包文件复制粘贴到目录中去

3.右键刚才创建的目录,点击“添加为库”

4.成功的话,ideal 就可以分析出.jar 包里都有啥,如图~

三.进行链接操作

1.创建数据源对象

 //1.创建数据源对象
        DataSource dataSource = new MysqlDataSource();
            //服务器地址
        ((MysqlDataSource)  dataSource).setUrl("JDBC:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");

        ((MysqlDataSource)  dataSource).setUser("root");//账户

        ((MysqlDataSource)  dataSource).setPassword("root");//密码

其中,MysqlDataSource来自刚刚导入的包 ,并将其赋值给 ​DataSource​接口(JDBC自带的接口)类型的变量 ​dataSource​。

这里进行了向下转型,不用也是可以的,这个看自己选择

MysqlDataSource mysqlDataSource = (MysqlDataSource) dataSource;
mysqlDataSource.setUrl("JDBC:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
mysqlDataSource.setUser("root");
mysqlDataSource.setPassword("root");

接着,还要给这个dataSource 设置必要的属性

a.数据库服务器在哪里

观察第一段代码,URL代表“唯一资源定位符”,也就是我们日常用的链接。

中间那一段很长的代码不要被吓到,请看图解~

注意的是(1)127.0.01这个IP地址是特殊的,表示本机,即  jdbc代码和mysql服务器都在一台电脑上,倘若分开,就另外再写 。

(2)characterEncoding=utf8:这是一个连接参数,指定字符编码为UTF-8。其中UTF-8是一种广泛使用的字符编码,支持多种语言的字符。

useSSL=false:这是另一个连接参数,指定不使用SSL(Secure Sockets Layer)进行连接。SSL是一种加密协议,用于在网络上安全地传输数据。在这个例子中,我们选择不使用SSL,即是不加密。

(3)一般mysql服务器默认端口号是3306.

后面的账号密码就同理了,调用对应的方法,别输错就是啦~ 

b.访问服务器的账户

c.访问服务器的密码 

2.和数据库服务器进行网络连接

        //2.和数据库服务器进行网络连接
        Connection connection = dataSource.getConnection();

通过调用 ​dataSource​对象的 ​getConnection​方法来获取一个数据库连接(相当于打电话,成功通了才能继续做出后序操作)。

​而Connection​对象是JDBC API中的一个核心接口,代表与数据库的连接。

同时也要做出异常处理,直接那么写会编译报错的,这里采用的是在main方法中抛出异常

3.程序构造sql语句

    //3.程序构造sql语句
        String sql = "insert into student values(1,'张三')";
        PreparedStatement preparedStatement =  connection.prepareStatement(sql);

首先这行代码定义了一个sql插入语句,直接将值 ​1​和 ​'张三'​插入到 ​student​表(对应的表在数据库已经创好了)。 

然后,这行代码通过调用 ​connection​对象的 ​prepareStatement​方法来创建一个PreparedStatement​类型的对象。​用于执行预编译的SQL语句。

但是!!!

虽然直接在sql语句中插入值是可行的,但这样无法避免SQL注入攻击,即有的输入不符合格式,很容易造成异常,所以更推荐使用参数化查询(即使用占位符 ​?​)。这样更保证安全性~

        //3.程序构造sql语句
        String sql="insert into student values(?,?)";
        PreparedStatement preparedStatement =  connection.prepareStatement(sql);
        preparedStatement.setInt(1,1);
        preparedStatement.setString(2,"张三");

4.发送sql语句到服务器中,并让服务器执行

        //4.把sql语句发送到服务器上,让服务器执行
        int n=preparedStatement.executeUpdate();
        System.out.println(n);

 这行代码通过调用 ​PreparedStatement​对象的 ​executeUpdate​方法(这里的修改就是广义上的修改,只要改了表结构和数据都算update)来执行SQL插入语句。

​executeUpdate​方法返回一个整数值,表示受影响的行数,来确保修改成功!

5.释放资源

毕竟连接和创建语句的时候都要消耗资源,要是连接操作不用的话就关闭即可~

        //5.释放上述资源
        preparedStatement.close();
        connection.close();

这里就是要注意,释放资源的顺序要和创建资源的顺序相反。 

6.结果展示 

IDEA上成功输出1,表示1行受到影响

同时在MySQL上输入命令行->

select * from student;

 当然,我这里用的是图形化工具--DataGrip ,表中同样插入了数据,即操作成功!

四.通过Java代码对数据库中表进行增删改查操作

1.增

上图演示的就是增,即插入数据。这里就不再赘述了~

2.查

package JDBC;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JDBCTest2 {
    public static void main(String[] args) throws SQLException {
        //1
        DataSource dataSource=new MysqlDataSource();
        ((MysqlDataSource) dataSource).setUrl("JDBC:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("root");
        //2
        Connection connection=  dataSource.getConnection();
        //3
        String sql="select * from student";
        PreparedStatement statement=connection.prepareStatement(sql);
        ResultSet resultSet=statement.executeQuery();
        //4
        while(resultSet.next()){//next​方法返回一个布尔值,只有不存在即为false 就停止遍历
            System.out.println(resultSet.getInt("id"));
            System.out.println(resultSet.getString("name"));
        }
        //5
        resultSet.close();
        statement.close();
        connection.close();

    }
}

仔细观察,我想查询的是学生表中所有数据,并创建了一个 ​PreparedStatement​对象来执行该查询。但是调用的是​executeQuery​方法返回一个 ​ResultSet​对象,就是一个临时表。

但是在Java中可以当做集合类来看待 ,采取对应的遍历方式去打印表的结果即可~

结果如图--> 

3.改(狭义)

注意的是,这里的改就是修改表中的数据。

package JDBC;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class JDBCTest4 {
    public static void main(String[] args) throws SQLException {
        //1.
        DataSource dataSource=new MysqlDataSource();
        ((MysqlDataSource) dataSource).setUrl("JDBC:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("root");
        //2.
        Connection connection = dataSource.getConnection();
        //3.
        String sql="update student set name='李四' where id=1";
        PreparedStatement statement = connection.prepareStatement(sql);
        //4.
        int n=statement.executeUpdate();
        System.out.println(n);
        //5.
        statement.close();
        connection.close();
    }
}

和插入数据的一模一样,不同的就是sql语句,换成对应的update语句~把id为1的name改成 “李四”。

结果如图 ,IDEA依旧输出1,表示1行受到影响

而数据库对应的student表也发生对应修改!

4.删

package JDBC;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class JDBCTest3 {
    public static void main(String[] args) throws SQLException {
        //1.
        DataSource dataSource= new MysqlDataSource();
        ((MysqlDataSource) dataSource).setUrl("JDBC:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("root");
        //2.
        Connection connection=dataSource.getConnection();
        //3.
        String sql="delete from student where id=1";
        PreparedStatement statement= connection.prepareStatement(sql);
        //4.
        int n=statement.executeUpdate();
        System.out.println(n);
        //5.
        statement.close();
        connection.close();
    }
}

删除也是只要改成对应的sql语句,其他的不变-->删除id为1的数据。

结果如图 ,IDEA依旧输出1,表示1行受到影响

而数据库对应的student表也发生对应删除,成了一张空表。

看到最后,如果觉得文章写得还不错,希望可以给我点个小小的赞,您的支持是我更新的最大动力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值