查询数据库里的数据

Statement对象的executeQuery()方法一般用于执行一个select语句,它只返回一个结果集,要想把查询结果最后显示给用户,必须对ResultSet对象进行处理。ResultSet对象包括一个由查询语句返回的一个表,这个表中包含所有的查询结果。对ResultSet对象的处理必须逐行进行。ResultSet对象维持一个指向当前行的指针(类似于Iterator的用法)。最初,这个指针指向第一行之前。ResultSet的next()方法使这个指针移向下一行。因此,第一次使用next()方法将指针指向结果集的第一行,这是可以对第一行的数据进行处理。处理完毕后,使用next()方法,将指针移向下一行,继续处理第二行数据。next()方法的返回值是一个boolean值,若为true,则说明指针成功地移向下一行,可以对该行进行处理。若返回值是false,则说明没有下一行,即结果集已经处理完毕。按从左至右的顺序对各列进行处理可以获得较高的执行效率。ResultSet接口的getXXX()方法可以从某列中获得结果,XXX表示JDBC的数据类型。

请看下例:

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

public class ResultSetTest {
	public static void main(String[] args) {
		Connection con = null;
		try {
			con = DBCon
					.getConnectionFromPooledDataSource("jdbcPool/mydatasource");
			Statement st = con.createStatement();
			String query = "select id,name from student";

			// 获得一个结果集
			ResultSet rs = st.executeQuery(query);
			// 获得结果集的元数据(表及相关的信息)
			ResultSetMetaData rsmt = rs.getMetaData();
			// 得到结果集有几列
			int num = rsmt.getColumnCount();
			String[] columns = new String[num];
			// 列的序号是从1开始的
			for (int i = 0; i < num; i++)
				columns[i] = rsmt.getColumnName(i + 1);
			// 先输出列名
			for (int i = 0; i < num; i++)
				System.out.print(columns[i] + "  ");
			// 输出列名之后换行
			System.out.println();
			// 取出结果
			while (rs.next()) {
				// 输出每一行的值
				for (int i = 1; i <= num; i++) {
					String temp = rs.getString(i);
					System.out.print(temp + "  ");
				}
				System.out.println();
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				// 用完后要关闭连接,释放资源
				if (con != null)
					con.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

	}
}
	

输出结果为:(Eclipse环境)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值