JDBC编程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
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前端的基本知识!

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7月前
|
Java 数据库连接 数据库
JSP奖学金管理系统myeclipse开发sqlserver数据库bs框架java编程jdbc
JSP 奖学金管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为SQLSERVER2008,使用java语言开发,系统主要采用B/S模式开发。
37 0
|
7月前
|
Java 关系型数据库 MySQL
JSP居民信息采集系统yeclipse开发mysql数据库bs框架java编程jdbc
JSP 居民信息采集系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语,言开发系统主要采用B/S模式开发。
37 0
|
5天前
|
Java 关系型数据库 MySQL
【JDBC编程】基于MySql的Java应用程序中访问数据库与交互数据的技术
【JDBC编程】基于MySql的Java应用程序中访问数据库与交互数据的技术
|
5天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
ava从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
|
7月前
|
Java 关系型数据库 MySQL
JSP学生交流论坛系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 学生交流论坛系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语,言开发系统主要采用B/S模式开发。 https://www.bilibili.com/video/BV1jB4y1q7Ut?spm_id_from=333.999.0.0
74 0
|
5天前
|
SQL Java 数据库连接
Java的JDBC编程
Java的JDBC编程
|
5天前
|
druid Java 数据库连接
最新Java基础系列课程--Day16-JDBC编程(三)
最新Java基础系列课程--Day16-JDBC编程
|
5天前
|
SQL 安全 Java
最新Java基础系列课程--Day16-JDBC编程(二)
最新Java基础系列课程--Day16-JDBC编程
|
5天前
|
SQL Java 关系型数据库
最新Java基础系列课程--Day16-JDBC编程(一)
最新Java基础系列课程--Day16-JDBC编程
|
5天前
|
SQL Java 关系型数据库
最新Java基础系列课程--Day16-JDBC编程
最新Java基础系列课程--Day16-JDBC编程