使用JDBC从MySQL查询数据
在本教程中,我们将向您展示如何使用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查询数据。

