JDBC编程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: JDBC编程

下载jar包

先要创建好一个项目,下载驱动包,下载驱动包有两种方式,

1 可以前往对应的官网下载驱动包

2 maven中心仓库下载,步骤如下:

(1)搜索MySQL,选择第一个

(2)选择对应MySQL版本的驱动包(博主这里是5点多的版本,那么只要是5点多的驱动包都可以的)

(3)点击下载

将jar包导入项目中

(1)创建一个目录(名字任意,这里就取为test):

(2)将刚才下载好的jar包导入到刚才创建好的项目中去:

一定先要对刚才下载好的jar包进行复制(ctrl+c),然后如下:

(3)右键目录

此时,完成以上步骤,jar包算是真的导入到了项目中去了

JDBC编程语法知识(insert为例,删和改一样的写法)

获取数据库服务器的位置

public class JDBC {
    public static void main(String[] args) {
        //创建Datasource对象,这个对象描述了服务器的位置
        DataSource dataSource = new MysqlDataSource();
        //设置数据库所在的位置
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/student?character=utf8&&useSSL=false");
        //设置登录数据库的用户名
        ((MysqlDataSource)dataSource).setUser("root");
        //设置登录数据库的密码
        ((MysqlDataSource)dataSource).setPassword("123456");
    }
}


这里解释一下url,url就是描述互联网上的一个资源所在的位置

1 第一部分jdbc:mysql表示表示的就是这个url就是用于jabc mysql的

2 ip地址,是mysql服务器所在的主机的ip地址,这里的ip地址是一个环回ip,表示本机的ip

3 3306代表的是mysql的端口号,在网络中,数据的传送分发给谁,依据的就是端口号,这里默认的就是3306,如果你改了,那就是改动的端口号

4 student表示数据库名

5 character-utf8表示字符集的表示为utf8格式,如果你的服务器是utf8mb,那么也会变成utf8

6 最后一个false代表不加密,true代表要加密

以后对于这个语句的使用,我们不需要记忆,只需要复制粘贴就可以了


这里的数据库用户名,直接填写root就可以了,下一个密码就是你在安装mysql时自己设置的密码,这个就相当于一个模板,之后获取的数据库的位置,也是一样的写法!


注意:

在这里最好不要直接用 MysqlDataSource直接创建实例,而是要用父类Datasource去创建,如果换了数据库,实例对象都是MysqlDataSouece类型,改动的代码太多了,所以还是直接用父类去引用,这样改动的代码就没有多少!


连接数据库

(1) 处理异常,按住alt+enter然后点击enter键就可以如下图所示,进行异常处理

(2)建立连接,一定要是jdbc中的connection

//建立连接

Connection connection =dataSource.getConnection();


输入信息(Scanner)

利用student数据库下有个student表,里面的表头有id和name两种,mysql中的数据类型要与java的数据类型相匹配


        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的学号:");
        int id = scanner.nextInt();
        System.out.println("请输入你的名字:");
        String name = scanner.next();

输入sql语句

在输入sql语句我们应该要遵循要想输入自己输入的,而不是固定的,这时有如下写法:

将字符串sql,转化为语句

PreparedStatement statement = connection.prepareStatement(sql);

填充占位符具体的数据:

statement.setInt(1,id);//下标1代表第一个问号,后面就是具体的数据(由于是Int型所以是调用setInt方法,第二个问号填充也是如此)

statement.setString(2,name);

打印填充完的sql语句

System.out.println(“statement:”+statement);

执行这个操作有助于我们排错,检查我们的sql语句是否写正确了

执行sql语句

int ret = statement.executeUpdate();

System.out.println(“ret=”+ret);//可以查看到有几行收到了这个sql语句的影响

回收释放资源

//回收执行语句
    statement.close();
    //断开连接
    connection.close();

整体模块代码(insert 版本)

public class JDBC {
    public static void main(String[] args) throws SQLException {
        //创建Datasource对象,这个对象描述了服务器的位置
        DataSource dataSource = new MysqlDataSource();
        //设置数据库所在的位置
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/student?character=utf8&&useSSL=false");
        //设置登录数据库的用户名
        ((MysqlDataSource)dataSource).setUser("root");
        //设置登录数据库的密码
        ((MysqlDataSource)dataSource).setPassword("859833112");

        //连接数据库
        Connection connection = dataSource.getConnection();
    //输入信息
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的学号:");
        int id = scanner.nextInt();
        System.out.println("请输入你的名字:");
        String name = scanner.next();
    //输入sql语句
        String sql = "insert into student values(?,?)";
    //将字符串sql语句转化成可执行的语句
        PreparedStatement statement = connection.prepareStatement(sql);
        //填充占位符
        statement.setInt(1,id);
        statement.setString(2,name);
        System.out.println("statement:"+statement);
    
        int ret = statement.executeUpdate();
        System.out.println("ret="+ret);
        //回收执行语句
        statement.close();
        //断开连接
        connection.close();
    }
}

执行结果:

从命令行数据库查询结果:

update版本

public class JDBC {
    public static void main(String[] args) throws SQLException {
        //创建Datasource对象,这个对象描述了服务器的位置
        DataSource dataSource = new MysqlDataSource();
        //设置数据库所在的位置
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/student?character=utf8&&useSSL=false");
        //设置登录数据库的用户名
        ((MysqlDataSource)dataSource).setUser("root");
        //设置登录数据库的密码
        ((MysqlDataSource)dataSource).setPassword("859833112");

        //连接数据库
        Connection connection = dataSource.getConnection();

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要修改的名字:");
        String name = scanner.next();
        System.out.println("输入修改之后的id:");
        int id = scanner.nextInt();

        String sql = "update student set id = ? where name = ?";

        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,id);
        statement.setString(2,name);
        System.out.println("statement:"+statement);

        int ret = statement.executeUpdate();
        System.out.println("ret="+ret);
        //回收执行语句
        statement.close();
        //断开连接
        connection.close();
    }

delete版本

public class JDBC {
    public static void main(String[] args) throws SQLException {
        //创建Datasource对象,这个对象描述了服务器的位置
        DataSource dataSource = new MysqlDataSource();
        //设置数据库所在的位置
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/student?character=utf8&&useSSL=false");
        //设置登录数据库的用户名
        ((MysqlDataSource)dataSource).setUser("root");
        //设置登录数据库的密码
        ((MysqlDataSource)dataSource).setPassword("859833112");

        //连接数据库
        Connection connection = dataSource.getConnection();

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要删除的名字:");
        String name = scanner.next();

        String sql = "delete from student where name = ?";

        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setString(1,name);
        System.out.println("statement:"+statement);

        int ret = statement.executeUpdate();
        System.out.println("ret="+ret);
        //回收执行语句
        statement.close();
        //断开连接
        connection.close();
    }
}

select版本

public class TestJDBCSelect {
    public static void main(String[] args) throws SQLException {
        //1. 创建数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("707703");

        //2.建立连接
        Connection connection = dataSource.getConnection();

        //3. 拼装 SQL
        String sql = "select * from student";
        PreparedStatement statement = connection.prepareStatement(sql);

        //4. 执行 sql
        // 查询操作 返回值 不是 int,而是一个 "临时表 "
        // 使用 ResultSet 表示这个表
        ResultSet resultSet = statement.executeQuery();

        //5. 遍历结果集合(返回临时表),先获取每一行,在获取这一行的或干列
        // next 方法表示获取到一行记录,同时把光标 往后移动一行
        // 如果遍历表结束为止,此处的 next 直接返回 false
        //mysql> select * from student;
        //        +------+--------+
        //        | id   | name   |
        //        +------+--------+
        //        |    2 | 李四    |
//                |    3 | 王五    |
        //        +------+--------+
        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println("id: " + id + ", name=" + name);

        }

        // 6. 释放资源
        resultSet.close();
        statement.close();
        connection.close();
    }
}

查询操作JDBC编程写法

总结

这里所学习的是JDBC最新的一个模式版本,当然还有其他方法可以写,比如反射,但是反射并不好,还是利用本方法的DataSource比较好,因为内置了连接池,频繁的创建以及断开连接的时候,DataSorce显然比反射更加高效!


在JDBC编程中,最核心的内容其实还是sql语句,其他基本就是模板,最主要的还是要加强对sql语句的掌握才是最重要的!!!数据库这方面的内容我们暂时就先学习到这里了!后面我们将继续往下学习有关网络编程的知识以及Javaweb前端的基本知识!

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
Java 数据库连接 网络安全
JDBC数据库编程(java实训报告)
这篇文章是关于JDBC数据库编程的实训报告,涵盖了实验要求、实验环境、实验内容和总结。文中详细介绍了如何使用Java JDBC技术连接数据库,并进行增删改查等基本操作。实验内容包括建立数据库连接、查询、添加、删除和修改数据,每个部分都提供了相应的Java代码示例和操作测试结果截图。作者在总结中分享了在实验过程中遇到的问题和解决方案,以及对Java与数据库连接操作的掌握情况。
JDBC数据库编程(java实训报告)
|
4月前
|
SQL Java 关系型数据库
Java中的JDBC编程详解
Java中的JDBC编程详解
|
4月前
|
SQL Java 关系型数据库
Java中的JDBC编程详解
Java中的JDBC编程详解
|
5月前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
70 3
|
6月前
|
SQL Java 关系型数据库
Java之JDBC数据库编程
Java之JDBC数据库编程
39 2
|
6月前
|
SQL Java 数据库连接
从零开启 JDBC 编程
从零开启 JDBC 编程
|
6月前
|
SQL Java 数据库连接
JDBC编程相关知识(实现图书管理系统进阶版)(下)
JDBC编程相关知识(实现图书管理系统进阶版)
41 0
|
6月前
|
Java 关系型数据库 MySQL
JDBC编程相关知识(实现图书管理系统进阶版)(上)
JDBC编程相关知识(实现图书管理系统进阶版)
60 0
|
6月前
|
SQL Java 数据库连接
Java从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
ava从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
|
6月前
|
SQL Java 关系型数据库
JavaWeb(JDBC编程)看这一篇就够了 —— 如何使用Java操作mysql数据库
JavaWeb(JDBC编程)看这一篇就够了 —— 如何使用Java操作mysql数据库
194 0