【Java, MySQL】JDBC , Java代码操作MySQL

hello,我是~小鹿,对你有帮助可以收藏随时找到这里哦

1. 引入驱动包,作为项目的依赖

这里我们使用中央仓库

中央仓库链接
https://mvnrepository.com/

1). 在这里搜索mysql
在这里插入图片描述

进去之后可以看到很多版本的数据库驱动包
数据库驱动包的版本要和数据库服务器的版本一致 ( 小版本不要求, 大版本得一致 )

点击:
在这里插入图片描述
之后可以看到很多版本的驱动包

2). 选择驱动包
这里我使用了5.1.49
( 这里我的数据库服务器是5.7版本的 是小版本 , 选择47,48,49之类都可以 )
在这里插入图片描述
点击进入后 点击红框位置下载驱动包
在这里插入图片描述
得到:
在这里插入图片描述
3). 将 jar 包拷贝项目中
打开IDEA , 创建了一个名为 JDBC 的新项目, 然后:
在这里插入图片描述
输入lib ( library 原意是图书馆 在这里是库的意思)
在这里插入图片描述
将刚刚下载的 jar 包复制 , 选中刚创建好的 lib 这个目录 , 粘贴
在这里插入图片描述
4). 将 jar 包导入项目中
右击 lib 选择 Add as Library…
在这里插入图片描述
然后点击ok
在这里插入图片描述
导入成功

2. Java代码操作MySQL

在src中创建 .java文件 编写代码
在这里插入图片描述
创建类名为JDBCDemo1
在这里插入图片描述

代码示例: 插入操作:

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 JDBCDemo1 {
    public static void main(String[] args) throws SQLException {
        //首先有一个jdbcdemo数据库 中有一个 student表(id,name),  往里面插入一个数据.

        //1. 创建"数据源"   数据源=>数据库服务器在哪
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbcdemo?characterEncoding=utf8&useSSL=false");


        //设置了URL之后,还需要设置用户名和密码
        ((MysqlDataSource)dataSource).setUser("root");//大家都是root
        ((MysqlDataSource)dataSource).setPassword("123456");//密码是安装数据库的时设置的密码


        //2.和数据库建立连接
        Connection connection = dataSource.getConnection();//这里需要抛异常

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

        //4.执行SQL语句 ,  返回值就是"这次操作影响到几行"
        int n = statement.executeUpdate();
        System.out.println("n = " + n);

        //5.释放必要的资源,关闭连接
        statement.close();//注意顺序 后创建的先关闭
        connection.close();//先创建的后关闭
    }
 }

代码示例: 插入操作的讲解

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 JDBCDemo1 {
    public static void main(String[] args) throws SQLException {
        //假定有一个jdbcdemo数据库中有一个student表(id,name), 往里面插入一个数据.

        //1. 创建"数据源"   数据源=>数据库服务器在哪
        DataSource dataSource = new MysqlDataSource();//向上转型
        //DataSource: JDBC 的interface
        //MysqlDataSource(): MySQL驱动包提供的类 这个类就实现了DataSource interface
        //设置URL:
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbcdemo?characterEncoding=utf8&useSSL=false");
        //向下转型又回来了
        //目的是为了使用setUrl()方法,这个方法是子类才有的
        //URL 唯一资源定位符,通常使用URL来描述网络的一个资源的位置
        //mysql本体是服务器,相当于是网络上的资源

        //或者:
//        MysqlDataSource dataSource = new MysqlDataSource();
//        dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/jdbcdemo?characterEncoding=utf8&useSSL=false");
        //这种写法完全可以,不要任何转型 直接这么写
        /**
         * 按照上述转型的写法 本意是希望 "MysqlDataSource" 这个类 不要扩散到代码的其他部分
         * 目的是想降低mysql驱动包,和咱们项目代码之间的耦合关系,避免后续更换数据库的时候,有太大的成本
         *
         * 不过当前代码比较简单 此时也不太涉及"耦合不耦合"的事情
         * 所以这里直接写的方法也,问题
         */

        /**
         * "jdbc:mysql://127.0.0.1:3306/jdbcdemo?characterEncoding=utf8&useSSL=false"
         * jdbc:mysql : url是一个啥样类型/用途的url  jdbc:mysql就是说是给jdbc的mysql使用的
         * 127.0.0.1 : ip地址   127.0.0.1是一个特殊的ip地址 特指你自己这个主机
         *             如果你的java代码和数据库服务器整齐不太主机上,就需要写对应数据库服务器的ip地址了
         *             如何查看一台机器的ip地址:打开cmd 输入ipconfig
         * 3306 : 端口号 用来区分主机上的应用程序的  (进程)
         * jdbcdemo : 数据库名
         * characterEncoding=utf8 : 统一字符集是utf8
         * useSSL=false : 表示数据库服务器和客户端之间的通信要不要加密
         *                不写也行 但还是写上,有的人这里不写连不上数据库
         *                (不写是默认加密的,有的人的电脑里的证书头问题,导致加密连接无法进行)
         */

        //设置了URL之后,还需要设置用户名和密码
        ((MysqlDataSource)dataSource).setUser("root");//大家都是root
        ((MysqlDataSource)dataSource).setPassword("123456");//安装数据库的时候 设置的密码


        //2.和数据库建立连接
        Connection connection = dataSource.getConnection();//这里需要抛异常
        //注意! 导入 Connection java.sql 这个包, 别的不行

        //3. 构造SQL语句
        String sql = "insert into student values(1,'张三')";
        PreparedStatement statement = connection.prepareStatement(sql);
        /**
         * 本身SQL语句 是String类型的
         * JDBC提供了Statement(语句) 对象, 让我们把String转换成Statement再转发给服务器执行
         * 但是 一般会使用PreparedStatement(预处理的语句) 对象来代替Statement
         *
         * Statement是把sql原封不动的直接发给数据库服务器,数据库服务器自己负责解析SQL
         * PreparedStatement 会先在客户端这边初步解析一下SQL(验证语法格式是否符合要求啥的..),此时
         * 服务器就不用做这些检查了,从而降低服务器的负担
         */

        //4.执行SQL语句 ,  返回值就是"这次操作影响到几行"
        int n = statement.executeUpdate();
        // executeUpdate()  适用于 插入,修改,删除这些操作 本质都是"写"操作  这里使用insert into 是插入操作
        // executeQuery()  适用于查询  本质是"读操作"
        System.out.println("n = " + n);

        //5.释放必要的资源,关闭连接
        statement.close();//注意顺序 后创建的先关闭
        connection.close();//先创建的后关闭
        /**
         * 创建的语句对象 和 连接对象, 都会持有一些计算机的硬件/软件上的资源, 这些资源不用了就应该要及时释放
         * java中虽然有"垃圾回收"机制,自动释放内存 但是计算机的资源不仅仅是内存
         * 比如 connection 使用到其他的资源
         * 这些其他的资源就需要手动释放,一般都会提供close方法 专门负责释放资源的方法
         */

    }
}

运行结果:
在这里插入图片描述
代表这次操作影响了student这个表中的一行
在MySQL中查询这个表:
在这里插入图片描述

插入的数据能够运行时动态的变化 代码

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

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

public class JDBCDemo1 {
    //插入的数据能够运行时 动态的变化
    public static void main(String[] args) throws SQLException {
        //假定有一个数据库jdbcdemo中一个student表(id,name), 往里面插入一个数据.

        //让用户通过控制台来输入学号和姓名
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学号: ");
        int id = scanner.nextInt();
        System.out.println("请输入姓名: ");
        String name = scanner.next();

        //1. 创建"数据源"   数据源=>数据库服务器在哪
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbcdemo?characterEncoding=utf8&useSSL=false");

        //设置了URL之后,还需要设置用户名和密码
        ((MysqlDataSource)dataSource).setUser("root");//大家都是root
        ((MysqlDataSource)dataSource).setPassword("123456");//安装数据库的时候 设置的密码

        //2.和数据库建立连接
        Connection connection = dataSource.getConnection();//这里需要抛异常

        //3. 构造SQL语句
        String sql = "insert into student values(?,?)";
        // ? 是一个占位符,占据一个位置后,后续 PreparedStatement 会把变量的数值带入到 ? 中  从而完成动态数值的插入
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,id);// 1 代表第一个'?'  ,注意是从1开始计
        statement.setString(2,name);
        
        //4.执行SQL语句 ,  返回值就是"这次操作影响到几行"
        int n = statement.executeUpdate();
        System.out.println("n = " + n);

        //5.释放必要的资源,关闭连接
        statement.close();//注意顺序 后创建的先关闭
        connection.close();//先创建的后关闭
    }
}

运行:
在这里插入图片描述
在MySQL中查询这个表:
在这里插入图片描述

查询操作的讲解

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 JDBCDemo2 {
    public static void main(String[] args) throws SQLException {
        //查询数据库jdbcdemo 中 student表
   
        //1. 创建"数据源"   数据源=>数据库服务器在哪
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbcdemo?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");//大家都是root
        ((MysqlDataSource)dataSource).setPassword("123456");//安装数据库的时候 设置的密码

        //2.和数据库建立连接
        Connection connection = dataSource.getConnection();//这里需要抛异常

        //3. 构造SQL语句
        String sql = "select * from student";
        PreparedStatement statement = connection.prepareStatement(sql);

        //4.执行查询操作
        //要使用 executeQuery (代表读操作),返回值是一个 ResultSet 类型的对象, 表示一个"表格"
        ResultSet resultSet = statement.executeQuery();

        //5.遍历结果集合
        while(resultSet.next()){
            //获取到这一行的 学号 列
            int id = resultSet.getInt("id");
            //获取到这一行的 姓名 列
            String name = resultSet.getString("name");
            System.out.println("id: " + id + ",name: " + name);
        }

        //6.释放必要的资源,关闭连接
        statement.close();
        connection.close();
    }
}

运行结果:
在这里插入图片描述

动态的查询操作 (查询某一行)

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;
import java.util.Scanner;

public class JDBCDemo2 {
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要查询的学号: ");
        int studentId = scanner.nextInt();

        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbcdemo?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");//大家都是root
        ((MysqlDataSource)dataSource).setPassword("123456");//安装数据库的时候 设置的密码

        Connection connection = dataSource.getConnection();//这里需要抛异常

        String sql = "select * from student where id = ?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,studentId);

        //执行查询操作, 要使用 executeQuery ,返回值是一个 ResultSet 类型的对象, 表示一个"表格"
        ResultSet resultSet = statement.executeQuery();

        //遍历结果集合
        while(resultSet.next()){
            //获取到这一行的 学号 列
            int id = resultSet.getInt("id");
            //获取到这一行的 姓名 列
            String name = resultSet.getString("name");
            System.out.println("id: " + id + ",name: " + name);
        }

        statement.close();
        connection.close();
    }
}

运行:
在这里插入图片描述

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
MySQL JDBC Driver是Java用于连接MySQL数据库的JDBC驱动程序。它是一个独立的库,可以通过下载和安装来使用。 要使用MySQL JDBC Driver,您需要执行以下步骤: 1. 下载MySQL JDBC Driver库:您可以从MySQL官方网站(https://dev.mysql.com/downloads/connector/j/)下载MySQL JDBC Driver。 2. 将库添加到您的Java项目:将下载的库文件添加到您的Java项目的类路径。 3. 建立数据库连接:使用JDBC API的DriverManager.getConnection()方法建立与MySQL数据库的连接。 以下是使用MySQL JDBC Driver建立数据库连接的示例代码: ``` import java.sql.*; public class MySQLExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "username"; String password = "password"; try { Connection connection = DriverManager.getConnection(url, username, password); System.out.println("Database connection successful!"); } catch (SQLException e) { System.out.println("Database connection failed!"); e.printStackTrace(); } } } ``` 在这个示例,我们使用了DriverManager.getConnection()方法来建立与MySQL数据库的连接。这个方法需要传递三个参数:URL、用户名和密码。URL是连接字符串,指定要连接的MySQL服务器和数据库。用户名和密码是用于访问MySQL数据库的凭据。如果连接成功,我们将打印一条成功消息。如果连接失败,我们将打印一条失败消息并打印异常堆栈跟踪。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

~小鹿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值