`
to_zoe_yang
  • 浏览: 143222 次
  • 性别: Icon_minigender_2
  • 来自: 01
社区版块
存档分类
最新评论

小小的总结下

阅读更多
tableName代表数据库中的表
fieldName代表需要查询的数据库表中的列名
cond代表查询的条件表达式,
cond.getCondition()得到具体的表达式

查询函数
public static List<Map<String, Object>> query(Connection con,
			String tableName, String[] fieldName, Condition cond){
		
		List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
		
		PreparedStatement psmt = null;
		ResultSet rs = null;
		
		try{
			StringBuffer sql = new StringBuffer("select ");
			StringBuffer tobeQueryed = new StringBuffer();
			
			if(fieldName.length!= 0){
				for(String field : fieldName){
					tobeQueryed.append(field + " ,");
				}
				tobeQueryed = new StringBuffer(tobeQueryed.substring(0, tobeQueryed.length()-1));
				
			}else{
				tobeQueryed.append(" * ");
			}
			
			sql.append(tobeQueryed);
			sql.append(" from "+tableName+ " where ");
			
			if (cond != null)
				sql.append(cond.getCondition());
	
			
			System.out.println("sql:"+sql);
			psmt = con.prepareStatement(sql.toString());
						
			//按照查询字段的数值设定,需要对应数据库中的类型!很重要的!
			if( cond!=null ){
				System.out.println(cond.getQueryValues());
				Vector<Object> values = cond.getQueryValues();
				int i = 1;
				for(Object value : values){
					if (value != null) {
						psmt.setObject(i, value);
						i++;
					}
				}
			}
			rs = psmt.executeQuery();
			
			while (rs.next()) {
				Map<String, Object> curResult = new HashMap<String, Object>();
				for (int j = 0; j < fieldName.length; j++) {
					Object object = rs.getObject(j + 1);
					if ( object instanceof String  && object !=null ){
						curResult.put(fieldName[j], ((String)object).trim());
					}
					else{
						curResult.put(fieldName[j], object);
					}
				}
				result.add(curResult);
			}
		}catch(Exception e){
			
		}
		return result;
	}
}



Condition类,构造条件表达式
Expression类代表任意的一个表达式
public class Condition {

	private Vector<Expression> expressions = new Vector<Expression>();
	private Vector<LogicOperator> operators = new Vector<LogicOperator>();
	
	public void addExpression(Expression exp){
		if(expressions.size()>0){
			System.out.println("and");
			operators.add(LogicOperator.and);
		}
		expressions.add(exp);
	}
	//得到查询字段对应的值
	public Vector<Object> getQueryValues(){
		Vector<Object> values = new Vector<Object>();
		
		for(int i=0; i<expressions.size(); i++){
			values.add(expressions.get(i).rightExp);
		}
		
		return values;
	}

	public String getCondition(){
		String sql = "";
		int  i;
		for(i=0; i<operators.size(); i++){
			sql = sql + expressions.get(i).getSQL() + " "+Expression.LogicOperatorToString(operators.get(i))+ " ";
		}
		sql = sql + expressions.get(i).getSQL();
		
		return sql;
	}
}
分享到:
评论

相关推荐

    mybatis小小总结文档

    mybatis学习知识点小小总结。。。。。。。。。。。。。。。。。。。。。。。

    计算机组成原理的小小总结(寻址)

    计算机组成原理的小小总结(寻址)

    大学期间对于Linux开发做的一些小小总结

    大学期间对于Linux开发做的一些小小总结

    JQuery的小小总结

    ### JQuery的小小总结 #### 一、概述 JQuery是一种流行的JavaScript库,它极大地简化了JavaScript编程中的HTML文档遍历、事件处理、动画以及Ajax交互等任务。由于其易用性和强大的功能,JQuery成为了前端开发中最...

    串口与并口的小小总结

    "串口与并口的小小总结" 串口和并口是连接外设的不同端口。这些端口的外形、传输速度和可以连接的设备都有所不同。 串口传输是一位接一位的,象串起的珠子一样,并口是可以并发数据的可以同时传输多位。串口要小...

    多线程面试题小小总结一下

    偏向锁是在无竞争情况下,将锁状态设置为偏向某一个线程,减少锁的获取开销。轻量级锁是通过CAS(Compare and Swap)操作实现,适用于线程间切换频繁的情况。当锁升级到重量级锁时,会使用操作系统互斥量,这会导致...

    小小七班班务总结.doc

    小小七班的班务总结,就是这种趋势下的一个实例,它记录了班级日常管理的各个方面,包括教学活动、学生行为管理、家校沟通等关键环节。这份总结不仅是对过去一段时间工作的回顾,也是对未来改进策略的规划,对于提升...

    《[小小班保育员工作总结]小小班月工作总结》.doc

    【小小班保育员工作总结】 小小班的保育工作是一项重要的任务,旨在为幼儿提供一个安全、健康、快乐的成长环境。本月的工作总结显示了在教育、保育、其他工作方面所取得的进展和存在的不足。 在教育方面,本月的...

    小小班个人工作计划总结总结(共12篇).doc

    小小班个人工作计划总结总结(共12篇).doc

    小小班个人工作计划总结.doc

    小小班个人工作计划总结.doc

    小小游戏程序员一年加九个月工作总结

    小小游戏程序员一年加九个月工作总结,心路历程

    FLASH动画小小作品

    总结来说,"FLASH动画小小作品"这个压缩包可能包含了一系列使用Flash制作的SWF动画作品,供人们学习、研究或欣赏。通过探索这些文件,可以深入了解Flash动画的制作技巧和ActionScript的应用,尽管现代Web开发已经...

    幼儿园小小班工作总结.doc

    经过一学期的共同努力,我们的小小班在多个方面取得了显著的进展和成果,以下是我们的工作总结。 首先,情感适应方面,我们重视孩子们的心理变化,采取了多种措施帮助他们逐渐适应幼儿园的集体生活。老师们经常给予...

    小小赛车会总结MicrosoftWord文档(4).doc

    小小赛车会总结MicrosoftWord文档(4).doc

    小小班托班班务工作总结.doc

    【小小班托班班务工作总结】是对托班一学期工作的全面回顾和总结,主要涵盖了保教工作、平安工作、家长工作以及月份安排等核心内容。 一、现状分析 小小班的幼儿年龄较小,存在多种挑战。一是幼儿普遍存在别离焦虑...

    小小android游戏框架

    总结来说,"小小Android游戏框架"是一个理想的起点,无论是对于初学者还是希望加深Android游戏开发理解的开发者。通过实际操作贪吃蛇游戏的开发,可以深入理解游戏开发的基本原理和技巧,为后续的项目开发打下坚实的...

    兴隆完小小学校信息化工作总结.pdf

    兴隆完小小学校信息化工作总结.pdf

    小小班教师个人总结.doc

    在领导的关怀和同事们的协助下,我逐步适应了这个角色,同时也见证了一群可爱的小朋友们的成长。 在日常生活的管理上,我始终注重培养孩子们的良好习惯。由于小班的孩子刚刚接触集体生活,他们的自我照顾能力和规则...

    小小五子棋

    总结,《小小五子棋》虽在界面设计上略显简陋,但作为一款由C++和Qt构建的五子棋游戏,它提供了基本的人机对战体验。随着未来联网对战功能的加入,游戏的可玩性和吸引力将得到进一步提升。同时,对于学习C++和Qt的...

    小小班班主任工作计划总结.doc

    小小班班主任工作计划总结.doc

Global site tag (gtag.js) - Google Analytics