使用JDBC从MySQL查询数据

时间:2019-11-20 08:52:36  来源:igfitidea点击:

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

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

Connection conn = DriverManager.getConnection(url,username,password);

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

Connection conn = MySQLJDBCUtil.getConnection()

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

Statement stmt  = conn.createStatement();

一旦创建了Statement对象,就可以使用它执行任何有效的MySQL查询,如下所示:

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

ResultSet rs    = stmt.executeQuery(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);

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

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

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

try{
   rs.close();
   stmt.close();
} catch(SQLException e) {
   System.out.println(e.getMessage());
}

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

package org.theitroad;

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

/**
 *
 * @author theitroad.local
 */
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());
        }
    }
}

该程序的输出如下:

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