使用JDBC对数据库进行简单操作

发布时间:2023年12月21日

Connection获得了数据库连接对象后,可以用Statement类型进行数据库操作。

Statement对象中,有三种,分别是StatementPrepareStatementCallableStatement

这三个的区别在于:

  • Statement
    • 用于执行不带参数的简单SQL语句
  • PreparedStatement
    • 用于执行带或者不带参数的SQL语句
    • SQL语句会预编译在数据库系统
    • 执行速度快于Statement对象
  • CallableStatement
    • 用于执行数据库存储过程的调用

Statement

Statement用于执行静态的SQL语句。通过con.createStatement()创建一个Statement对象之后,调用executeQuery(sql)函数进行SQL操作。

executeQuery函数原型:

public ResultSet executeQuery(String sql) throws SQLException

这个方法接受一个 SQL 查询字符串作为参数,并返回一个 ResultSet 对象,该对象包含查询结果。如果查询失败,则抛出 SQLException 异常。

当使用StatementPreparedStatement对象执行查询语句时,会返回一个ResultSet对象,它包含了查询结果的数据。通过ResultSet对象,可以遍历结果集的行,并获取每一行中的列数据。

ResultSet对象维护一个指向其当前数据行的游标,并提供了多种常用的方法来访问数据。

  1. next():将光标移动到下一行。当ResultSet对象中没有更多行时,它返回false,因此可以在while循环中使用它进行迭代。
  2. getString(columnName):根据列名获取整行的字符串。
  3. getString(int columnIndex):根据列的索引位置获取整行的字符串。
  4. getInt(columnName):根据列名获取整行的int值。
  5. getInt(int columnIndex):根据列的索引位置获取整行的int值。
  6. close():关闭ResultSet对象,释放资源。

这些方法可以根据需要选择使用,以高效地访问和处理查询结果。

在数据库中模糊查找airports表中符合nameName,并逐个打印出来。

    public static void findAirportByName(String name) {
        try {
            Statement stat = con.createStatement();
            System.out.println(name);
            ResultSet res = stat.executeQuery("SELECT * FROM airports WHERE Name LIKE '%" + name + "%'");

            while(res.next()) {
                System.out.println(
                        "id: " + res.getInt(1) + " Name: " + res.getString(2) + " Address: " + res.getString(3) +
                                " Type: " + res.getString(4) + " Phone: " + res.getString(5) + " Level: " + res.getString(6)
                );
            }
        } catch (SQLException ex) {

        }
    }

在这里插入图片描述

PrepareStatement

PrepareStatement是预编译的Statement对象。在prepareStatement方法中使用占位符(?)来代替具体的参数值,然后使用set方法设置参数的值。最后调用execute方法进行执行。

预编译是指在执行SQL语句之前,将SQL语句发送到数据库进行预处理,以提高执行效率和安全性。

set方法的函数原型:

void setXXX(parameterIndex idx, x val); // XXX 为Int String 等

其中parameterIndex idx中的下标从1开始。

execute方法的返回值为布尔值,成功执行返回true;否则,返回false

向数据库中插入一条机场信息。

    public static void addNewAirPort() {
        try
        {
            ps=con.prepareStatement("insert into airports (Id, Name, Address, Type, Phone, Level) values (?, ?, ?, ?, ?, ?)");
            ps.setInt(1, 42);
            ps.setString(2, "abcdef");
            ps.setString(3, "Shanghai");
            ps.setString(4, "BBB");
            ps.setString(5, "1232323");
            ps.setString(6, "Sk");

            ps.execute();

        }
        catch(SQLException ex)//捕捉并处理SQL异常(创建数据库连接对象的时候或者执行SQL语句的时候)
        {
            System.out.println(ex.toString());
        }
    }

在这里插入图片描述

[【JDBC】Java连接MySQL数据库-CSDN博客](https://blog.csdn.net/qq_61635026/article/details/131637051?ops_request_misc=&request_id=&biz_id=102&utm_term=jdbc mysql&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-7-131637051.142v96pc_search_result_base3&spm=1018.2226.3001.4187)

文章来源:https://blog.csdn.net/qq_63432403/article/details/135141952
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。