• JDBC中的元数据——3.结果集元数据


    package metadata;
    
    import java.sql.Connection;
    import java.sql.ParameterMetaData;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.util.List;
    
    import javax.sql.DataSource;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    import entity.Student;
    import util.SQLUtil;
    
    /**
     * 结果集元数据:
     * @author mzy
     *
     */
    public class Demo03 {
    	private static DataSource ds = new ComboPooledDataSource();
    	public static void main(String[] args) throws Exception {
    		// easyUse();
    		
    		// 补充完SQLUtil中的Query方法
    		List<Student> list = SQLUtil.query("select * from student", null, Student.class);
    		for(Student student : list) {
    			System.out.println(student);
    		}
    	}
    
    	private static void easyUse() throws Exception {
    		Connection conn = ds.getConnection();
    		
    		String sql = "select * from student";
    		PreparedStatement stmt = conn.prepareStatement(sql);
    		/*
    		 *  获取参数元数据:
    		 *  	目的是取得我们需要赋值的参数数量;
    		 *  	例如如如果我们的查询中有where条件!
    		 */
    		ParameterMetaData param = stmt.getParameterMetaData();
    		int count = param.getParameterCount();
    		
    		Object[] values = null;
    		System.out.println(count);
    		/* // 因为恒无法进入,所以注释掉
    		if(values != null) { // 当传入的values为空,说明不需要参数
    			// 有需要赋值的参数的时才进行if中的操作
    			for(int i=0; i<count; i++) {
    				stmt.setObject(i+1, values[i]);
    			}
    		}
    		*/
    		ResultSet rs = stmt.executeQuery();
    		/*
    		while(rs.next()) { 
    			// 原来的办法,手动的取出每一行中的数据
    			int id = rs.getInt(1);
    			String name = rs.getString(2);
    			System.out.println(id+"	"+name);
    		}
    		*/
    		// 这里的while中从结果集中取得元素的时候
    		// 程序并不知道没一行有几个元素
    		// 所以这里需要结果集元数据,就可以知道一共有几列了
    		ResultSetMetaData metaData = rs.getMetaData();
    		int col = metaData.getColumnCount();
    		while(rs.next()) {
    			// 遍历每列
    			for(int i=1; i<=col; i++) {
    				Object value = rs.getObject(i);
    				System.out.print(value+"	");
    			}
    			System.out.println();
    		}
    		
    		conn.close();
    	}
    }
    


    其中部分已经封装到了SQLUtil中,请点击

  • 相关阅读:
    spring冲刺第九天
    梦断代码读后感1
    spring冲刺第八天
    站立会议第三天
    站立会议第二天
    站立会议第一天
    购书问题
    团队项目NABCD分析
    你的灯亮着吗读书笔记3
    你的灯亮着吗读书笔记2
  • 原文地址:https://www.cnblogs.com/mzywucai/p/11053461.html
Copyright © 2020-2023  润新知