获取数据库的元数据信息:
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;
}
}