使用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查询数据。