【MySQL】JDBC编程

欢迎关注个人主页:逸狼


创造不易,可以点点赞吗~

如有错误,欢迎指出~



目录

代码连接数据库的 前期准备 

通过代码使用JDBC的API

创建数据源对象

给数据源对象设置必要属性

 setUrl

setUser

setPassword

建立网络连接

发送到服务器 执行

释放资源

完整代码 插入数据

 用户自行输入内容

查询操作代码

 ​编辑


代码连接数据库的 前期准备 

针对数据库的操作,实际工作中 很少会直接通过 命令行/图形化 客户端来操作数据库,更多是通过代码(C++,Java,Python,Go.....)操作数据库,前提数据库要提供一组API(Application Programming Interface 应用程序编程接口,在库中的类/方法/函数就可以称为API)供其他程序来使用

每个数据库的api都是自成一套体系,Java自身指定了一套API,其他数据库都要把自己的API转换成和Java这一套兼容的API(即JDBC),对于Java程序员,只需要学习一套api就可以应对各种数据库了

mysql官方提供了一个mysql-connector第三方库 将MySQL原生的C的API转换成 兼容JDBC的Java的API

mysql-connector 是第三方库,需要自己下载,推荐取maven中央仓库下载

以下是下载步骤:

如果mysql 服务器是8系列,connector 也必须使用8版本(5版本同理) 

下载好jar包 ,在idea里创建一个项目,拷贝到自己创建的一个目录(这里演示的是'lib' ),右键这个目录,选择 add as library(告诉idea,这个lib目录是一个'库'目录),添加完 '库'后,此时idea就能自动分析出jar包里的内容

通过代码使用JDBC的API

下面通过演示 用代码操作数据库 并 插入数据的效果

创建数据源对象

由于DataSource是一个Interface,不能new出来,需要实现这个接口的子类(MysqlDataSource())

        //1.创建数据源对象
        DataSource dataSource =new MysqlDataSource();


        //给数据源对象 设置必要的属性
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("111111");

给数据源对象设置必要属性

 setUrl

设置 数据库服务器的 位置

URL称为 "唯一资源定位符" 用来描述一个 网络上的资源的位置,数据库也可以理解为一种网络资源

代码中setUrl里的: jdbc:mysql://127.0.0.1:3306/test1characterEncoding=utf8&usesSL=false(不用记,知道含义就行)

setUser

设置 访问服务器的账户

root 是 mysql自带用户,管理员用户,权限是最高的

setPassword

设置 访问服务的密码  (你安装数据库时 设置的密码)

建立网络连接

        //2.和数据服务器建立网络连接
        dataSource.getConnection();
        Connection connection =dataSource.getConnection();
        System.out.println(connection);

构造sql语句

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

 

发送到服务器 执行

        //把sql语句发送到服务器上,让服务器执行
        int n=statement.executeUpdate();//n表示执行的语句数量
        System.out.println(n);//查看要几行被影响了

 

释放资源

释放资源的顺序要和创建资源的顺序 相反

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

完整代码 插入数据

update/ delete 代码完全一样,只是把string sql里的内容换了

    public static void main(String[] args) throws SQLException {
        //1.创建数据源对象
        DataSource dataSource =new MysqlDataSource();

        //给数据源对象 设置必要的属性
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("111111");

        //2.和数据服务器建立网络连接
        dataSource.getConnection();
        Connection connection =dataSource.getConnection();
        System.out.println(connection);

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

        //4.把sql语句发送到服务器上,让服务器执行
        PreparedStatement statement = connection.prepareStatement(sql);
        int n=statement.executeUpdate();

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

插入数据后,查看数据库,插入成功

 用户自行输入内容

在上面完整代码中 添加两处代码

        //0.让用户输入id 和name
        Scanner scanner= new Scanner(System.in);
        System.out.println("请输入id: ");
        int id = scanner.nextInt();
        System.out.println("请输入name: ");
        String name =scanner.next();
        //3.程序构造sql语句
        String sql ="insert into student values(?,?)";
        //把sql语句发送到服务器上,让服务器执行
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,id);//1说明替换第一个问号
        statement.setString(2,name);
        int n=statement.executeUpdate();

查询操作代码

select 操作和上面操作相比 都了个"遍历结果集合" 步骤

    //查询
    public static void main(String[] args) throws SQLException {

        //1.创建数据源对象
        DataSource dataSource =new MysqlDataSource();
        //给数据源对象 设置必要的属性
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("111111");

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

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

        //4.执行sql
        ResultSet resultSet=statement.executeQuery();

        //5.遍历结果集合
        while(resultSet.next()){
            //循环 针对一行数据进行处理
            System.out.println(resultSet.getInt("id"));
            System.out.println(resultSet.getString("name"));
        }
        
        //6.释放上述资源
        resultSet.close();
        statement.close();
        connection.close();
    }

 

  • 51
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值