封装工具类SQL查询心得

封装工具类SQL查询注意事项

在测试封装工具类SQL查询时出现Exception in thread "main"的警告
at util.DUtil.select(DUtil.java:36)
at util.Test.main(Test.java:10)

在这里插入图片描述在这里插入图片描述

SQL查询的封装问题所在

Class cls = Class.forName(ClassName);
			//获取成员变量存入field数组
			Field [] fields = cls.getDeclaredFields();
			//使用工具类连接数据库静态处理块
			Statement st = GetConn.getStatement();
			ResultSet rs = st.executeQuery(sql);
			ResultSetMetaData rsmd = rs.getMetaData();
			String [] colname = new String[rsmd.getColumnCount()];
			**for (int i = 1; i < colname.length; i++) {**
				colname[i - 1] = rsmd.getColumnName(i);
			}

报错的行没问题 , 研究半天发现主要是上文出现的代码中
for (int i = 1; i < colname.length; i++) {
缺少了“=”,使得最后一个値没有赋到。

SQL查询的封装注意事项

重点在于反射与通过工具类连接数据库创建静态处理块

Class cls = Class.forName(ClassName);
//获取成员变量存入field数组
Field [] fields = cls.getDeclaredFields();
使用工具类连接数据库静态处理块
Statement st = GetConn.getStatement();
ResultSet rs = st.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();

以及后面多得多重嵌套循环

String [] colname = new String[rsmd.getColumnCount()];
			for (int i = 1; i <= colname.length; i++) {
				colname[i - 1] = rsmd.getColumnName(i);
			}
	
		while (rs.next()) {
			Object obj = cls.newInstance();
			arrayList.add(obj);
			for (String columnn : colname) {
				for (Field field : fields) {

再之后就是查找对应的属性对对象进行赋值

if (field.getName().toUpperCase().equals(columnn.toUpperCase())) {
							if ("int".equals(field.getType().getName())) {
								field.set(obj, rs.getInt(columnn));
							}else if ("java.sql.Date".equals(field.getType().getName())) {
								field.set(obj, rs.getDate(columnn));
							}else if ("float".equals(field.getType().getName())) {
								field.set(obj, rs.getFloat(columnn));
							}else if ("java.lang.String".equals(field.getType().getName())) {
								field.set(obj, rs.getString(columnn));
							}

以上就是对封装SQL查询的经验

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值