JDBC的增删改查(实习第二天)

JDBC的增删改查

今天是实习的第二天,我学了JDBC的增删改查,现在做个笔记留作纪念。

数据库的创建与设置

数据库这里,我使用的mysql-5.5.58版本,直接用公司发的安装包下载,安装到自己的电脑上。
在这里插入图片描述

创建一个second数据库(本应该是JDBC数据库,为了自己使用方便命名为second)
在这里插入图片描述
创建成功后,右键表,创建新表,数据格式如下图所示
在这里插入图片描述
自己在表中添加数据
在这里插入图片描述
至此,数据库部分初步设置完成。

IDEA代码的编写

我们常用的JDBC接口和类都在java.sql包中。
Connection接口、Statement接口、PreparedStatement接口、DriverManager类以及ResultSet接口是这次用到的。

Connection接口代表与特定的数据库的连接,在连接上下文中进行SQL语句并返回结果。

Statement接口用于已经建立连接的基础上向数据发送SQL语句。在JDBC中有3种Statement对象,分别是Statement、PreparedStatement和CallableStatement。Statement用于执行不带参数的简单的SQL语句;PreparedStatement继承了Statement,用来执行动态的SQL语句;CallableStatement继承了PreparedStatement,用于执行对数据库存储的过程中的调用。

PreparedStatement接口用来动态地执行SQL语句。通过PreparedStatement实例执行的动态的SQL语句,将被预编译并保存到PreparedStatement实例中,从而可以实现反复执行SQL语句。当向数据库发送一个SQL语句,数据库中的SQL解释器负责把SQL语句生成底层的内部命令,然后执行该命令,完成相关的数据操作。如果不断的向数据库提交SQL语句,肯定会增加数据库中SQL解释器的负担,影响执行速度。

DriverManager类用来管理数据库中的所有驱动程序。他是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动程序之间建立联系。通过getConnection(String url,String user,String password)方法建立连接。

ResultSet接口类似于临时表,用来暂时存放数据库查询操作所获得的结果集。ResultSet的实例具有指向当前数据行的指针,指针开始的位置在第一条记录的前面,通过next()方法可将指针向下移。

接下来的重点就是IDEA里面编写相关的实现代码了。
JDBC的工作流程有以下7个步骤:

  1. 加载驱动
  2. 创建连接
  3. 写sql
  4. 得到statement对象
  5. 执行sql,得到结果集
  6. 处理结果集
  7. 关闭资源

1、加载驱动
在主函数中声明

        ResultSet resultSet = null;
        PreparedStatement statement =null;
        Connection connection = null;

给定初值为null。

2、创建连接

try{
        Class.forName("com.mysql.jdbc.Driver");
        connection =  DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/second?useSSL=true&characterEncoding=utf-8&user=root&password=xiaoli0312");
        System.out.println("创建连接成功");  //提示连接成功
}
//mysql的地址根据自己电脑确定,second是我自己的数据库名称,使用其他数据库可以对应修改;password是安装mysql时设置的密码,根据个人情况而定。

3-6部分将分为查询、添加、删除、更改四个部分叙述:

查询:
写sql语句,用于选择user表,然后得到数据,将数据显示到处理页

      //3.写SQL
      String sql="select * from user";
      //4.得到statement对象
      statement = connection.prepareStatement(sql);
       //5.执行sql,得到结果集
       resultSet = statement.executeQuery();
       //6.处理结果集
       while(resultSet.next()){
                System.out.println(resultSet.getInt(1));
                System.out.println(resultSet.getString(2));
                System.out.println(resultSet.getString(3));
                }

增加
我是添加一个username为zhangyi,密码为53573的新用户,ID通过mysql自增自动生成。

    //3.写sql
    String sql = "insert into user(username,password)values(?,?)";
    //4.得到statement对象
    statement = connection.prepareStatement(sql);
    statement.setString(1,"zhangyi");
    statement.setString(2,"53573");
    statement.executeUpdate();

删除
将ID为2的对象删除

     //3.写sql
     String sql = "delete from  user where id = ?";
     //4.得到statement对象
     statement = connection.prepareStatement(sql);
     statement.setInt(1,2);
     statement.executeUpdate();

得到的结果为
在这里插入图片描述
证明已经删除完成

更改
我的是将ID为1的信息的username改成zhangqi

      //3.写sql
      String sql = "update user set username = ? where id = ?";
      //4.得到statement对象
      statement = connection.prepareStatement(sql);
      statement.setString(1,"zhangqi");
      statement.setInt(2,1);
      statement.executeUpdate();

结果如下:
在这里插入图片描述

上面代码中的“?”都是留给下面自己按需输入对应值的。

7、关闭资源
对于不同的功能,分别关闭相对应的定义了的资源。
在查询中,因为初始化了connection、statement、resultset三个变量,所以需要全部关闭,另外三个功能只有statement和connection两个,所以只需要将if(resultSet!=null){……}里面的内容删去即可

        finally {
            if (resultSet!=null) {
                try {
                    resultSet.close();
                }catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (statement!=null){
                try{
                    statement.close();
                }catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (connection!=null){
                try{
                    connection.close();
                }catch (SQLException e) {
                    e.printStackTrace();
                }
            }

以上就是实习第二天所做的全部事情了。

参考文档:
https://blog.csdn.net/SSY_1992/article/details/88355481

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值