jdbc元数据入门-2(ResultSetMetaData,ParameterMetaData)
上次文章的知识是通过jdbc元数据可以获取连接的数据库的信息,结合本节的知识就可以完全作出一个自定义的持久层实现了。
首先看示例:
public class Test {
public static void main(String[] args) throws Exception {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://127.0.0.1:1433;database=Northwind;user=sa;password=huhuiyu";
Connection connection = DriverManager.getConnection(connectionUrl);
// 建立查询
Statement statement = connection.createStatement();
String sql = "select EmployeeID as '员工编号',Title as '头衔' ,BirthDate as '生日' from Employees";
ResultSet rs = statement.executeQuery(sql);
// 获取查询的元数据
ResultSetMetaData meta = rs.getMetaData();
int cols = meta.getColumnCount(); // 获取查询结果的列数
for (int i = 1; i <= cols; i++) {
System.out.print(String.format("列%1$s的信息--", i));
System.out.print(String.format("名称:%1$s,", meta.getColumnName(i)));
System.out.print(String.format("java类型名称:%1$s,", meta .getColumnClassName(i)));
System.out.print(String.format("sql类型名称:%1$s,", meta.getColumnTypeName(i)));
System.out.print(String.format("显示需要的最大长度:%1$s,", meta .getColumnDisplaySize(i)));
System.out.println();
}
// 关闭连接
rs.close();
statement.close();
connection.close();
}
}
数据库还是连接的Sql Server.ton通过元数据(ResultSetMetaData)可以很方便的获取出查询结果列的详细信息.
而且离线数据集(RowSet,前面的文章中说过它的使用)也是完全实现了ResultSet的所有方法,所以所有ResultSet能够完成的功能,RowSet也
可过做到,配合上次文章的知识可以将一个数据库中所有的表,以及表中所有的列信息全部查询出来。只要查询语句写成:
SELECT * FROM 表名称 WHERE 1=2 就可以了。
最后给出预处理语句(PreparedStatement)的元数据信息的代码,作为jdbc元数据的结束。
PreparedStatement ps=connection.prepareStatement(
"select EmployeeID,Title from Employees where EmployeeID < ? and Title like ?");
ParameterMetaData meta=ps.getParameterMetaData();
int cols = meta.getParameterCount(); // 获取预编译语句的参数个数
for (int i = 1; i <= cols; i++) {
System.out.print(String.format("预编译参数%1$s的信息--", i));
System.out.print(String.format("java数据类型:%1$s,", meta.getParameterClassName(i)));
System.out.print(String.format("sql数据类型:%1$s", meta.getParameterTypeName(i)));
System.out.println();
}
同过两篇文章的知识介绍,希望对大家熟悉jdbc元数据起到一些作用。
上次文章的知识是通过jdbc元数据可以获取连接的数据库的信息,结合本节的知识就可以完全作出一个自定义的持久层实现了。
首先看示例:
public class Test {
public static void main(String[] args) throws Exception {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://127.0.0.1:1433;database=Northwind;user=sa;password=huhuiyu";
Connection connection = DriverManager.getConnection(connectionUrl);
// 建立查询
Statement statement = connection.createStatement();
String sql = "select EmployeeID as '员工编号',Title as '头衔' ,BirthDate as '生日' from Employees";
ResultSet rs = statement.executeQuery(sql);
// 获取查询的元数据
ResultSetMetaData meta = rs.getMetaData();
int cols = meta.getColumnCount(); // 获取查询结果的列数
for (int i = 1; i <= cols; i++) {
System.out.print(String.format("列%1$s的信息--", i));
System.out.print(String.format("名称:%1$s,", meta.getColumnName(i)));
System.out.print(String.format("java类型名称:%1$s,", meta .getColumnClassName(i)));
System.out.print(String.format("sql类型名称:%1$s,", meta.getColumnTypeName(i)));
System.out.print(String.format("显示需要的最大长度:%1$s,", meta .getColumnDisplaySize(i)));
System.out.println();
}
// 关闭连接
rs.close();
statement.close();
connection.close();
}
}
数据库还是连接的Sql Server.ton通过元数据(ResultSetMetaData)可以很方便的获取出查询结果列的详细信息.
而且离线数据集(RowSet,前面的文章中说过它的使用)也是完全实现了ResultSet的所有方法,所以所有ResultSet能够完成的功能,RowSet也
可过做到,配合上次文章的知识可以将一个数据库中所有的表,以及表中所有的列信息全部查询出来。只要查询语句写成:
SELECT * FROM 表名称 WHERE 1=2 就可以了。
最后给出预处理语句(PreparedStatement)的元数据信息的代码,作为jdbc元数据的结束。
PreparedStatement ps=connection.prepareStatement(
"select EmployeeID,Title from Employees where EmployeeID < ? and Title like ?");
ParameterMetaData meta=ps.getParameterMetaData();
int cols = meta.getParameterCount(); // 获取预编译语句的参数个数
for (int i = 1; i <= cols; i++) {
System.out.print(String.format("预编译参数%1$s的信息--", i));
System.out.print(String.format("java数据类型:%1$s,", meta.getParameterClassName(i)));
System.out.print(String.format("sql数据类型:%1$s", meta.getParameterTypeName(i)));
System.out.println();
}
同过两篇文章的知识介绍,希望对大家熟悉jdbc元数据起到一些作用。