JSP中ResultSet接收值问题
按常理来,我们都知道接收数据库中的值都是这样ResultSetrs=*****ArrayList<shiTi>arlist=newArrayList<shiTi>();w...
按常理来,我们都知道接收 数据库中的值都是这样
ResultSet rs=*****
ArrayList<shiTi> arlist = new ArrayList<shiTi>();
while (rs.next()) {
entity shiTi = new entity ();
shiTi .set_Id(rs.getInt("id"));
shiTi.set_UserName(rs.getString("userNamer"));
shiTi.set_Nr(rs.getString("nr"));
arlist.add(shiTi);
}
这样返回 一个实体的数据集 到上一层 处理。
但是,假如 我都不知道这个实体都有什么属性,表中我也不知道有什么字段。
用 shiTi .set_Id(rs.getInt("id"));
1 set_id 我不知道。
2 rs.getInt("id") id字段 我也不知道或是 不考虑 数据类型也是
那我怎么把那个 rs 循环放到 ArrayList数据集中?或是其他的方法?
我听说有一个方法 能获取 rs中的 字段集合。但是 我看了JDK 没找到。
原理就是 取出先 取出rs中的 字段 集合。通过 这个集合 得出长度。用for循环 取出 rs中的数据 存到ArrayList中。
请问 各位高手有没有人这样做过。或者 知道那个获取 字段集合的方法来。
高分追加 请问。
我用的环境是 MyEclipse7.0 。 展开
ResultSet rs=*****
ArrayList<shiTi> arlist = new ArrayList<shiTi>();
while (rs.next()) {
entity shiTi = new entity ();
shiTi .set_Id(rs.getInt("id"));
shiTi.set_UserName(rs.getString("userNamer"));
shiTi.set_Nr(rs.getString("nr"));
arlist.add(shiTi);
}
这样返回 一个实体的数据集 到上一层 处理。
但是,假如 我都不知道这个实体都有什么属性,表中我也不知道有什么字段。
用 shiTi .set_Id(rs.getInt("id"));
1 set_id 我不知道。
2 rs.getInt("id") id字段 我也不知道或是 不考虑 数据类型也是
那我怎么把那个 rs 循环放到 ArrayList数据集中?或是其他的方法?
我听说有一个方法 能获取 rs中的 字段集合。但是 我看了JDK 没找到。
原理就是 取出先 取出rs中的 字段 集合。通过 这个集合 得出长度。用for循环 取出 rs中的数据 存到ArrayList中。
请问 各位高手有没有人这样做过。或者 知道那个获取 字段集合的方法来。
高分追加 请问。
我用的环境是 MyEclipse7.0 。 展开
3个回答
展开全部
//传入你的ResultSet
public static void printRS(ResultSet rs) throws SQLException
{
//检索此 ResultSet 对象的列的编号、类型和属性。
ResultSetMetaData rsmd = rs.getMetaData();
//得到当前的列数
int colCount = rsmd.getColumnCount();
while(rs.next()) { //while控制行数
for(int i = 1; i <= colCount; i++ ) {//for循环控制列数
if(i > 1) {
System.out.print(",");
}
//得到当前列的列名
String name = rsmd.getColumnName(i);
//得到当前列的值
String value = rs.getString(i);
System.out.print(name + "=" + value);
} System.out.println();
}
}
public static void printRS(ResultSet rs) throws SQLException
{
//检索此 ResultSet 对象的列的编号、类型和属性。
ResultSetMetaData rsmd = rs.getMetaData();
//得到当前的列数
int colCount = rsmd.getColumnCount();
while(rs.next()) { //while控制行数
for(int i = 1; i <= colCount; i++ ) {//for循环控制列数
if(i > 1) {
System.out.print(",");
}
//得到当前列的列名
String name = rsmd.getColumnName(i);
//得到当前列的值
String value = rs.getString(i);
System.out.print(name + "=" + value);
} System.out.println();
}
}
展开全部
你要写工具?看你的代码感觉你还写不了这个,建议你看看hibernate的源代码,你想做的它都已经做了。
顺便说一下,运行时你一定知道entity的属性,所以这里用反射取得所有属性,再判断数据类型,根据这个属性的名字推算数据库字段的名字(或使用配置文件映射),最后赋值。说的简单,实现起来挺麻烦,还是用现成的工具吧,明白原理就行了
顺便说一下,运行时你一定知道entity的属性,所以这里用反射取得所有属性,再判断数据类型,根据这个属性的名字推算数据库字段的名字(或使用配置文件映射),最后赋值。说的简单,实现起来挺麻烦,还是用现成的工具吧,明白原理就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
try
{
ResultSet resultSet = null;
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
int cols = resultSetMetaData.getColumnCount();// 返回值多少列
for(int i = 0 ; i <cols; i++)
{
resultSetMetaData.getColumnName(i);//列名
resultSetMetaData.getColumnType(i);//列的类型
}
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
{
ResultSet resultSet = null;
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
int cols = resultSetMetaData.getColumnCount();// 返回值多少列
for(int i = 0 ; i <cols; i++)
{
resultSetMetaData.getColumnName(i);//列名
resultSetMetaData.getColumnType(i);//列的类型
}
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询