JDBC编程

目录

JDBC简介:

工作原理

JDBC的使用:

以插入数据为例:

步骤一:设置三要素

步骤二:建立连接

步骤三:构造语句、实例化statement对象

步骤四:执行Sql语句

步骤五:释放资源

优化部分(灵活输入问题)

查询的写法:

 最重要的一步:创建结果集合 Result 对象



📌————本章重点————📌

🔗设置三要素

🔗建立连接

🔗构造语句

🔗实例化statement对象

🔗执行Sql语句

🔗灵活输入问题

🔗创建结果集合 Result 对象
 ✨————————————✨

JDBC简介:

        JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序

工作原理:

        有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言"编写一次,处处运行"的优势。

        由于Java语言访问数据库操作是完全面向抽象接口编程的,因此开发数据库应用不用限定在特定数据库厂商的API,从而使程序的可移植性大大增强。


JDBC的使用:

        接下来就跟着我的每一步慢慢操作吧~

        操作JDBC,就需要提前准备好数据库与数据表:

准备阶段:

① 创建一个数据库:Blog

② 再添加一个表:student

 接下来就是代码实现:

① 准备好:mysql-connector-java-5.1.47.jar 这个包,它内部实质上是封装了许多就可以直接操作MySql服务器的接口等。(具体这个包的获取方法在此处有详解,有包的直接跳过到②部分即可)

点击此网址:https://mvnrepository.com/?__cf_chl_rt_tk=hSw0UubreO.5L2ufhhEXrJjjUswwtcdMShGI6ejCmc8-1670558608-0-gaNycGzNCiU

         这里注意:大版本一定要和自己mysql版本一样,比如我的mysql是5.7,那么只要选5开头的版本都可以:

② 复制①中的这个包,按照图中步骤,新建一个目录,并将这个包粘贴进去即可:

 ③最后开始创建类和项目即可;


以插入数据为例:

分步骤操作:

①设置三要素;

②建立连接;

③构造语句并实例化对象;

④执行Sql语句;

⑤释放资源;

步骤一:设置三要素

        设置要操作的 数据库来源 、 用户名、密码.

 ①数据库来源:

        格式基本固定,只需要根据实际情况调整部分参数;

        URL:唯一资源地址符,描述了一个唯一的资源位置;

jdbc:mysql://127.0.0.1:3306/java/blog?characterEncoding=utf8&useSSL=false

②用户名:用户名固定就用root(也可以配置别的,工作中也不太用得到),这个是mysql自带的用户;

③密码:密码就是安装数据库时手动设置的密码;

步骤二:建立连接

        和数据库建立网络连接,写的jdbc实质就是实现了一个mysql客户端,要通过网络和服务器进行连接。

        获取Connection对象通常有两种方式:

  •         一种是通过DriverManager(驱动管理类)的静态方法获取:
// 加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");

// 创建数据库连接
Connection connection = DriverManager.getConnection(url);
  •         一种是通过DataSource(数据源)对象获取。实际应用中会使用DataSource对象。 

  1. DriverManager类来获取的Connection连接,是无法重复利用的,每次使用完以后释放资源时,通过connection.close()都是关闭物理连接。
  2. DataSource提供连接池的支持。连接池在初始化时将创建一定数量的数据库连接,这些连接是可以复用的,每次使用完数据库连接,释放资源调用connection.close()都是将Conncetion连接对象回收。 

 这一步中有两个点需要注意:

①选择这个Connection:

 ②需要处理受查异常,直接交给JVM即可:

步骤三:构造语句、实例化statement对象

         JDBC API中主要提供了三种Statement对象:

  1.         statement:用于执行不带参数的简单SQL语句;
  2.         PreparedStatement:①用于执行带或不带参数的SQL语句;                                                                                     ②SQL语句会预编译在数据库系统;                                                                                         ③执行速度快于Statement对象;
  3.         CallableStatement:用于执行数据库存储过程中的调用;
            实际开发中最常用的是PreparedStatement对象,

        insert into blog values(1, '张三') 这句正好是 mysql 的插入语句.

步骤四:执行Sql语句

        执行语句本质上就是我们操作mysql成功时,给我们的一个反馈.

步骤五:释放资源

        释放的顺序与创建的顺序相反,这是值得注意的.

最后我们来看效果:

打开mysql,查看表内容:


优化部分(灵活输入问题):

1.对于构造语句部分,我们不想固定输入的信息,想插入其他数据怎么办?

        方法一:字符串拼接

         这种写法不仅不美观,而且容易引起“SQL注入攻击”,最好的写法是下面这种:

        方法二:使用占位符替换:

        最终代码:

/**
     *  使用 JDBC 将数据插入到 blog 库的 student 表中
     */
    public static void main(String[] args) throws SQLException {
        //1.设置三要素:
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/blog?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("111111");
        //2.建立连接
        Connection connection = dataSource.getConnection();

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

        //3.构造一个mysql语句,作为插入内容
        String sql = "insert into student values(?,?)";
        //  构造一个对象,mysql还需要借助对象来对sql进行操作和描述
        PreparedStatement statement = connection.prepareStatement(sql);
        //替换
        statement.setInt(1,id);
        statement.setString(2,name);

        //4.执行语句
        int ret = statement.executeUpdate();
        System.out.println("ret = " + ret);

        //5.断开连接、释放资源
        statement.close();
        connection.close();

    }

注意:

        该例子讲了插入数据,其他操作只需要在修改sql语句内容的基础上注意以下情况:

        如果要进行增、删、改,就使用 executeUpdate 来执行

        如果要进行查询,就使用executeQuery 来执行


查询的写法:

        步骤同前,多了一步 “创建结果结合” 的操作:

先按照之前操作写到 “建立连接”:

 接下来,构造语句 和 实例化对象:

 最重要的一步:创建结果集合 Result 对象

         ResultSet里的数据一行一行排列,每行有多个字段,并且有一个记录指针,指针所指的数据行叫做当前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用ResultSet的next()方法 ,如果我们想要得到ResultSet里的所有记录,就应该使用while循环。

 最后释放资源:

执行结果:

最终代码:

public static void main(String[] args) throws SQLException {
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/blog?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("111111");

        Connection connection = dataSource.getConnection();

        String sql = "select * from student where name = '张三'";
        PreparedStatement statement = connection.prepareStatement(sql);

        ResultSet resultSet = statement.executeQuery();
        while (resultSet.next()) {
            //next 相当于移动一下鼠标,光标指向下一行,直到移动到结尾
            //获取每一行
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println(id + ": " + name);
        }

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

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

@糊糊涂涂

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

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

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

打赏作者

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

抵扣说明:

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

余额充值