JDBC连接8.0或以上版本mysql

JDBC连接8.0或以上版本mysql

IDE:idea

预先准备:

1.已安装好8.0或以上版本mysql

2.去mysql官网下载JDBC驱动(jar包)

下载好后我们需要的就是后缀名为jar的文件,如下图(我这里下载的是8.0.20版本)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mGx6mgzR-1623172239028)(https://i.loli.net/2021/06/09/rZm4P3DBe87s1gv.png)]

步骤:

1.新建一个JDBC的项目(其实就是文件夹),我这里取名为myjdbc
在这里插入图片描述

2.在myjdbc下新建一个libs文件夹,用来导入连接数据库所需的jar包。把之前下载好的jar包复制到libs目录下,这个需要找到project的路径,再进入libs中复制。注意,这里我放的是我的路径,每个人project存放位置不同,所以读者需要找到自己project所在路径,libs文件夹需要自己创建(刚新建项目时没有libs文件夹,libs的名字也是自己取的,读者也可以使用其他名字)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8bLioxYI-1623172130706)(https://i.loli.net/2021/06/09/Mfg6uD94UN57m3G.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R6xXIOJt-1623172130713)(https://i.loli.net/2021/06/09/fP2ihImYTZJz4DR.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hu9ysFs9-1623172130719)(https://i.loli.net/2021/06/09/BMYQW45VULsvfzq.png)]

将jar包复制到libs文件夹下后,还需要在idea中右击jar包,添加为library才算大功告成。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w6vXUELF-1623172130724)(https://i.loli.net/2021/06/09/l59cB4XRDInhPud.png)]

我这里因为已经添加成library了,所以就不放右击后的截图了。

建立数据库(已经建好库的读者可以忽略):

按win+R输入cmd指令进入命令行程序,输入mysql -u root -p,然后再输入安装mysql时设置的密码,进入mysql

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZYbqM4Pb-1623172130728)(https://i.loli.net/2021/06/09/x5DEavKj2otJ8Hn.png)]

PS:这一步报错的同学可能是没有配置mysql的环境变量,可以去网上搜一下,设置好后再回来

这里放一下常用的mysql指令:

查看当前有哪些数据库:show databases;
创建数据库:create database 数据库名;
创建数据库时设置字符编码:create database 数据库名称 charset utf8;
查看某个数据库的信息:show create database 数据库名;
进入或切换数据库:use 数据库名;
显示当前数据库:select database();
表相关:
查看当前有哪些表:show tables;
创建表:create table 表名(字段1,字段类型,...);
查看表属性信息:show create table 表名;
查询表中的数据:select * from 表名;
插入数据:insert into 表名(字段1,字段2,...) values('','',''...);
删除数据:delete from 表名 where 条件表达式
更新数据:update 表名 set 属性名 = 修改后的值 where 属性名 条件表达式

然后的话mysql安装好后自带四个数据库,这四个数据库不能删。我们新建一个数据库先:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q57zSEhL-1623172781615)(https://i.loli.net/2021/06/09/Gyzvth6FLPHUCTD.png)]

我这里取名为myjdbc,建好后可以用show databases命令查看现在有哪些数据库:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GmB2WRK5-1623172130733)(https://i.loli.net/2021/06/09/PfqlyMeOKDVE4Yu.png)]

注意:除了myjdbc是我们刚刚新建的,其他四个库是本来就有的。

然后用切换数据库指令use 数据库名切换到我们刚建好的数据库myjdbc:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rKjC1bMf-1623172130735)(https://i.loli.net/2021/06/09/6w3XJuyQAt4K9hB.png)]

然后新建一个表users:

create table 表名(字段1,字段类型,...);

再插入数据:

insert into 表名(字段1,字段2,...) values('','',''...);

插入数据后,查询一下数据:

select * from 表名;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NHuKYEij-1623172130736)(https://i.loli.net/2021/06/09/S98m73AVepxTfkz.png)]

然后我们就可以在idea中编写java文件来连接mysql了。

编写java文件

在src目录下新建java文件

1.加载并注册数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");这里是固定写法

2.通过DriverManager获取数据库连接
获取数据库连接的具体方式如下:

			String url = "jdbc:mysql://localhost:3306/myjdbc?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8";
            String username = "root";
            String password = "这里需要改成你自己的密码";

            conn = DriverManager.getConnection(url, username, password);

url中3306后面的myjdbc是数据库名,需要改成要连接的数据库名,其他地方不变,直接复制即可。

3.通过Connection对象获取Statement对象
Connection创建Statement的方式有如下3种:

  • createStatement():创建基本的Statement对象
  • prepareStatement():创建prepareStatement对象
  • prepareCall():创建CallableStatement对象

以创建基本的Statement对象为例,创建方式如下:
Statement stmt = conn.createStatement();

4.使用Statement对象执行SQL语句
所有的Statement都有如下3中执行SQL语句的方法:

  • execute():可以执行任何SQL语句
  • executeQuery():通常执行查询语句,执行后返回代表结果集的ResultSet对象
  • executeUpdate():主要用于执行DML和DDL语句。执行DML语句,如insert、update、delete时,返回受SQL语句影响的行数,执行DDL语句返回0。
            String sql = "select * from users"; //这里的sql语句可以改
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql); //结果集

5.操作ResultSet结果集
如果执行的SQL语句是查询语句,执行结果将返回一个ResultSet对象,该对象里保存了SQL语句的查询结果。程序可以通过操作该ResultSet对象来取出查询结果。
6.关闭连接,释放资源。

至此,JDBC程序的大致实现步骤以及完成。

下面放一个查询数据的完整代码:
该程序从之前我们已经建好的表users中读取数据,并将结果打印在控制台。

public static void main(String[] args) throws Exception{
        Connection conn = null;
        Statement stmt = null;
        //PreparedStatement preStmt = null;
        ResultSet rs = null;

        try{
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/myjdbc?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8";
            String username = "root";
            String password = "root";

            conn = DriverManager.getConnection(url, username, password);
            String sql = "select * from users";
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);

            System.out.println("id\tname\tpassword\temail\tbirthday");
            while(rs.next()){
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String psw = rs.getString("password");
                String email = rs.getString("email");
                String birthday = rs.getString("birthday");
                System.out.println(id + "\t" + name + "\t" + psw + "\t" + email + "\t"
                + birthday);
            }
//            String sql = "insert into users(name, password, email, birthday)"
//                    + "values(?, ?, ?, ?)";

            //1.创建执行sql语句的prepareStatement对象
//            preStmt = conn.prepareStatement(sql);
//            //2.为sql语句中的参数赋值
//            preStmt.setString(1, "zl");
//            preStmt.setString(2, "123456");
//            preStmt.setString(3, "zl@sina.com");
//            preStmt.setString(4, "1789-12-23");
//            //3.执行sql语句
//            preStmt.executeUpdate();
        }
        catch (Exception e){
            e.printStackTrace();;
        }
        finally {
            if(rs != null){
                try {
                    rs.close();
                }
                catch (Exception e){
                    e.printStackTrace();
                }
                rs = null;
            }
            if(stmt != null){
                try {
                    stmt.close();
                }
                catch (Exception e){
                    e.printStackTrace();
                }
                stmt = null;
            }
//            if(preStmt != null){
//                try {
//                    preStmt.close();
//                }
//                catch (Exception e){
//                    e.printStackTrace();
//                }
//                preStmt = null;
//            }
            if(conn != null){
                try {
                    conn.close();
                }
                catch (Exception e){
                    e.printStackTrace();
                }
                conn = null;
            }
        }


    }

运行结果:
在这里插入图片描述
可以看到,这与我们之前在命令行中访问到的结果相同:
在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:精致技术 设计师:CSDN官方博客 返回首页
评论

打赏作者

Tshaxz

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值