关闭

查询数据库里的数据

286人阅读 评论(0) 收藏 举报

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环境)


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:125846次
    • 积分:3609
    • 等级:
    • 排名:第9020名
    • 原创:256篇
    • 转载:0篇
    • 译文:0篇
    • 评论:7条
    文章均来自以下教程网
    文章分类
    文章存档
    最新评论