java [30] 数据库的元数据信息和参数的元数据信息以及结果集的元数据信息

获取数据库的元数据信息:

package com.us.test;
/*获取数据库的元数据信息
 * 接口 DatabaseMetaData
 * 通过接口获取相关信息 
 * */


import java.sql.Connection;
import java.sql.SQLException;

import com.mysql.cj.jdbc.DatabaseMetaData;
import com.us.daoimpl.jdbcUtils;

public class Dbmetadata {

	public static void main(String[] args) throws SQLException {
		// TODO Auto-generated method stub
		Connection conn = jdbcUtils.getConnection();
		java.sql.DatabaseMetaData dbmd = conn.getMetaData();
		System.out.println("db name : " + dbmd.getDatabaseProductName());
		System.out.println("db 是否支持事务: "+ dbmd.supportsTransactions());
		System.out.println("db 版本号"+ dbmd.getDatabaseProductVersion());
		conn.close();
		
		
	}

}

参数的元数据信息:

package com.us.test;

import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.us.daoimpl.jdbcUtils;

public class Paramsmetadata {
	public static void main(String[] args) {
		String sql = "select * from userInfo where username=? and id =?";
		Object[] params = new Object[] {"user1",2};
		
		Query(sql, params);
	}
	
	private static void Query(String sql,Object[] Params) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = jdbcUtils.getConnection();
			//String sql = "update userInfo set  money =money +100 where id =1";
			ps = conn.prepareStatement(sql);

			ParameterMetaData pmd = ps.getParameterMetaData();
			int count=pmd.getParameterCount();
			System.out.println(count);
			for (int i =1;i<=count;i++) {
				/*System.out.println(pmd.getParameterClassName(i));
				System.out.println(pmd.getParameterType(i));
				System.out.println(pmd.getParameterTypeName(i));*/
				ps.setObject(i, Params[i-1]);
					
				}		
			rs = ps.executeQuery();
			while(rs.next()) {
				System.out.println(rs.getInt("id")+"\t"+rs.getString("username"));
			}
		}catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			jdbcUtils.free(rs, ps, conn);
		}		
	}

}

结果集的元数据信息的运用:

package com.us.test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import com.us.daoimpl.jdbcUtils;

public class Resultsetmetadatatest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//获取单条数据
		Map<String, Object> data = Query("select * from userInfo");
		System.out.println(data);
		
		//获取多条数据
		List<Map<String, Object>> datas =  Query2("select * from userInfo");
		System.out.println(datas);
		

	}
	
	//一行数据
	private static Map<String, Object> Query(String sql) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		Map<String, Object> data = null;
		try {
			conn = jdbcUtils.getConnection();
			//String sql = "update userInfo set  money =money +100 where id =1";
			ps = conn.prepareStatement(sql);

			rs = ps.executeQuery();
			java.sql.ResultSetMetaData rsmd = rs.getMetaData();
			int count = rsmd.getColumnCount();
			String[] colNames = new String[count];
			for (int i=0;i<count;i++) {
				/*System.out.print(rsmd.getColumnClassName(i) + "\t");
				System.out.print(rsmd.getColumnName(i)+ "\t");
				System.out.println(rsmd.getColumnLabel(i));*/
				colNames[i] = rsmd.getColumnName(i+1);
			}
			
			while(rs.next()) {
				// System.out.println(rs.getInt("id")+"\t"+rs.getString("username")); 
				data = new HashMap<String,Object>();
				for (int i=0;i<colNames.length;i++ ) {
					data.put(colNames[i], rs.getObject(colNames[i]));
				}
				
			}
		}catch (Exception e) { 
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			jdbcUtils.free(rs, ps, conn);
		}
		return data;		
		
	}
	private static List<Map<String, Object>> Query2(String sql) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		 List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>();
		try {
			conn = jdbcUtils.getConnection();
			//String sql = "update userInfo set  money =money +100 where id =1";
			ps = conn.prepareStatement(sql);

			rs = ps.executeQuery();
			java.sql.ResultSetMetaData rsmd = rs.getMetaData();
			int count = rsmd.getColumnCount();
			String[] colNames = new String[count];
			for (int i=0;i<count;i++) {
				/*System.out.print(rsmd.getColumnClassName(i) + "\t");
				System.out.print(rsmd.getColumnName(i)+ "\t");
				System.out.println(rsmd.getColumnLabel(i));*/
				colNames[i] = rsmd.getColumnName(i+1);
			}
			
			while(rs.next()) {
				// System.out.println(rs.getInt("id")+"\t"+rs.getString("username")); 
				Map<String,Object> data = new HashMap<String,Object>();
				for (int i=0;i<colNames.length;i++ ) {
					data.put(colNames[i], rs.getObject(colNames[i]));
				}
				datas.add(data);
				
			}
		}catch (Exception e) { 
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			jdbcUtils.free(rs, ps, conn);
		}
		return datas;		
		
	}


}
 

猜你喜欢

转载自blog.csdn.net/qq_38125626/article/details/82014485