数据库JDBC编程

JDBC

JDBC是干啥的呢?
简单来说就是用java代码操作数据库
各种数据库,在开发的时候,就会提供一组编程接口(API)
API:Application Program Interface
简单来说就是有个软件,这个软件给你一些功能,你基于这些功能能对这个软件干啥
API往往是以 函数,类 的形式来提供的,说白了就是这个API在这个程序里面就是一组函数,只不过这组函数不是你自己实现的,而是人家那个程序提供给你的,你基于这些API,可以对这个程序进行各种操作
各种数据库一开始提供的api是不一样的,但是程序员学习多种api又很费劲,这就需要一个很有地位的大佬来调节,就是Java,java跟这些数据库开发者说你们底层的api不用动,然后你们共同封装一下你们自己的api,然后对接到我的api上,java提供的这一套api就叫JDBC
在这里插入图片描述
因此,java程序员要想进行数据库开发,就需要在你的项目中导入对应的数据库的驱动包,才能编写代码,数据库的驱动是能让JDBC认识数据库的api

怎么引入数据库驱动包呢?

这里是用的maven的中央仓库,点下面
maven中央仓库
进入之后搜索mysql
选这个
在这里插入图片描述
进去之后,有很多版本,注意这个 版本要跟你的mysql版本一致,我的是5.xx的,所以也要选5.xx的,小版本随意,大版本一致就好
如果你不知道你的mysql版本,输入select version();查看就好
在这里插入图片描述
我用的5.1.49
进去之后,点
在这里插入图片描述
什么是jar呢?
java通过.java源文件编译成.class文件,jvm来解释执行.class
每个.java都对应一个.class文件,如果代码里.java非常多,就可以把一大堆的.class文件给打包成压缩包,这个压缩包的后缀就是.jar,把jar拷贝给对方,对方就可以直接使用jvm来运行了,此处mysql驱动包的这个jar不是单独运行的jar,可以把它导入到咱们的项目,然后就可以调用其中的方法和类来进行编程了
怎么导入jar包呢?
第一步
在这里插入图片描述
创建好一个Directory之后,把你下载好的包复制粘贴到这里就好了,此处我的这个Directory就叫jar
在这里插入图片描述
注意不用你自己解压,jvm会自己识别
第二步把这个jar包标记成一个库
在这里插入图片描述
成功之后见下图
在这里插入图片描述

弄好之后,idea就能识别这个目录里的jar包,从而就可以调用里面的类来写代码了

编写JDBC代码

JDBC看起来麻烦,实际上非常简单,这里的代码刚开始接触会觉得很麻烦,设计很多新的类,新的方法马,新的概念,新的参数啥的,但是多写几次就会发现,这里的代码就是固定套路
JDBC的创建分为以下几个步骤:
1.创建并初始化一个数据源
(数据源就是描述数据库服务器在哪里,jdbc提供了一个叫DataSource的接口)
2.和数据库服务器建立连接
3.构造sql语句
4.执行sql语句
5.释放必要的资源

下面来一个插入数据库的代码块

插入

public class JDBCInsert {
    public static void main(String[] args) throws SQLException {
        //1.创建并初始化一个数据源
        //DataSource是一个接口,所以不能直接new一个DataSource
        DataSource dataSource=new MysqlDataSource();//向上转型
        //再转回来,setUrl这个方法是子类独有的,要想获取数据源,就必须用这个方法,要想获取这个方法,就要向下转型
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/xiaobai?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("021018");
        //2.和数据库建立连接
        Connection connection=dataSource.getConnection();
        //3.构造sql语句
        String sql="insert into student value(1,'张三')";
        PreparedStatement statement= connection.prepareStatement(sql);
        //4.执行sql语句
        int ret=statement.executeUpdate();
        System.out.println(ret);
        //5.释放必要资源
        statement.close();
        connection.close();
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面是进阶版

public class JDBCInsert
{
    public static void main(String[] args) throws SQLException
    {
        Scanner scanner = new Scanner(System.in);
        //1.创建并初始化一个数据源
        //DataSource是一个接口,所以不能直接new一个DataSource
        DataSource dataSource=new MysqlDataSource();//向上转型
        //再转回来,setUrl这个方法是子类独有的,要想获取数据源,就必须用这个方法,要想获取这个方法,就要向下转型
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/xiaobai?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("021018");
        //2.和数据库建立连接
        Connection connection=dataSource.getConnection();
        //3.从控制台读取用户输入的数据
        System.out.println("请输入学生姓名: ");
        String name = scanner.next();
        System.out.println("请输入学号: ");
        int id = scanner.nextInt();
        //4.构造sql语句
        String sql = "insert into student value(?, ?)";
        PreparedStatement statement= connection.prepareStatement(sql);
        statement.setInt(1, id);
        statement.setString(2, name);
        //可以把这个对象打印出来看一下效果,如果你执行这个代码出错了,你就可以把里面的这个对象打印出来,看看这里哪里有语法错误
        //System.out.println(statement);
        //5.执行sql语句
        int ret=statement.executeUpdate();
        System.out.println(ret);
        //6.释放必要资源
        statement.close();
        connection.close();
    }
}

查询

    public static void main(String[] args) throws SQLException {
        // 1. 创建并初始化数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java107?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("2222");
        // 2. 建立连接
        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()) {
            // 把 resultSet 想象成一个表格. 同时表格这里有个光标, 初始情况下光标指向表最上面~~
            // 每次调用 next, 光标往下走一行~~
            // 当光标指向某一行的时候, 就可以通过 getXXX 来获取到当前这行里的数据
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println("id = " + id + ", name = " + name);
        }
        // 6. 释放资源
        resultSet.close();
        statement.close();
        connection.close();
    }

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值