Querying Data From MySQL Using JDBC

在本教程中,我们将向您展示如何使用 JDBC Statement 和 ResultSet 对象从 MySQL 查询数据。

要从 MySQL 查询数据,首先需要使用 Connection 对象建立与 MySQL 的连接

Connection conn = DriverManager.getConnection(url,username,password);Code language: Java (java)

我们开发了一个名为 MySQLJDBCUtil 的实用程序类,它使用存储在属性文件中的数据库参数打开一个新连接。

Connection conn = MySQLJDBCUtil.getConnection()Code language: Java (java)

打开连接后,需要创建一个Statement对象。 JDBC 提供了几种语句,例如Statement、PreparedStatement 和CallableStatement。要查询数据,只需使用Statement对象即可,如下所示:

Statement stmt  = conn.createStatement();Code language: Java (java)

创建 Statement 对象后,您可以使用它来执行任何有效的 MySQL 查询,如下所示:

String sql = "SELECT first_name, last_name, email " +
             "FROM candidates";

ResultSet rs    = stmt.executeQuery(sql)Code language: SQL (Structured Query Language) (sql)

我们调用了Statement对象的executeQuery()方法。此方法返回一个 ResultSet 对象,其中包含 SQL 查询的结果。结果采用基于SELECT 语句的行和数据列的形式。

ResultSet 对象为您提供了遍历结果和读取数据的方法。如果有可用行,则next()方法返回 true 并移至 ResultSet 中的下一行,否则返回 false。在读取数据之前必须至少调用一次next()方法,因为在第一次next()调用之前,ResultSet 位于第一行之前。

要获取当前行的列数据,可以使用getDataType()方法,其中 DataType 是列的数据类型,例如 int、string、double 等,您需要将列名称或列索引传递给 getDataType()方法,例如:

String s = rs.getString("column_name");
int id   = rs.getInt(1);Code language: Java (java)

要从候选结果集中获取数据,请执行以下操作:

while (rs.next()) {
   System.out.println(rs.getString("first_name") + "\t" + 
                      rs.getString("last_name")  + "\t" +
                      rs.getString("email"));
                    
}Code language: Java (java)

当您完成数据遍历时,应始终通过调用close()方法关闭 ResultSet 和 Statement 对象。

try{
   rs.close();
   stmt.close();
} catch(SQLException e) {
   System.out.println(e.getMessage());
}Code language: Java (java)

如果您使用 try-with-resource 语句,则会自动调用close()方法,因此您无需显式执行此操作。以下是从示例数据库candidates表中查询数据的完整示例。

package org.mysqltutorial;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author mysqltutorial.org
 */
public class Main {
    
    public static void main(String[] args) { 
        // 
        String sql = "SELECT first_name, last_name, email " +
                     "FROM candidates";
        
        try (Connection conn = MySQLJDBCUtil.getConnection();
             Statement stmt  = conn.createStatement();
             ResultSet rs    = stmt.executeQuery(sql)) {
           
            // loop through the result set
            while (rs.next()) {
                System.out.println(rs.getString("first_name") + "\t" + 
                                   rs.getString("last_name")  + "\t" +
                                   rs.getString("email"));
                    
            }
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
    }
}Code language: Java (java)

程序的输出如下:
mysql jdbc查询数据

在本教程中,我们向您展示了如何使用 JDBC 和简单的 SQL 语句从 MySQL 查询数据。

本教程有帮助吗?