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学习知识点小小总结。。。。。。。。。。。。。。。。。。。。。。。
计算机组成原理的小小总结(寻址)
大学期间对于Linux开发做的一些小小总结
### JQuery的小小总结 #### 一、概述 JQuery是一种流行的JavaScript库,它极大地简化了JavaScript编程中的HTML文档遍历、事件处理、动画以及Ajax交互等任务。由于其易用性和强大的功能,JQuery成为了前端开发中最...
"串口与并口的小小总结" 串口和并口是连接外设的不同端口。这些端口的外形、传输速度和可以连接的设备都有所不同。 串口传输是一位接一位的,象串起的珠子一样,并口是可以并发数据的可以同时传输多位。串口要小...
偏向锁是在无竞争情况下,将锁状态设置为偏向某一个线程,减少锁的获取开销。轻量级锁是通过CAS(Compare and Swap)操作实现,适用于线程间切换频繁的情况。当锁升级到重量级锁时,会使用操作系统互斥量,这会导致...
小小七班的班务总结,就是这种趋势下的一个实例,它记录了班级日常管理的各个方面,包括教学活动、学生行为管理、家校沟通等关键环节。这份总结不仅是对过去一段时间工作的回顾,也是对未来改进策略的规划,对于提升...
【小小班保育员工作总结】 小小班的保育工作是一项重要的任务,旨在为幼儿提供一个安全、健康、快乐的成长环境。本月的工作总结显示了在教育、保育、其他工作方面所取得的进展和存在的不足。 在教育方面,本月的...
小小班个人工作计划总结总结(共12篇).doc
小小班个人工作计划总结.doc
小小游戏程序员一年加九个月工作总结,心路历程
总结来说,"FLASH动画小小作品"这个压缩包可能包含了一系列使用Flash制作的SWF动画作品,供人们学习、研究或欣赏。通过探索这些文件,可以深入了解Flash动画的制作技巧和ActionScript的应用,尽管现代Web开发已经...
经过一学期的共同努力,我们的小小班在多个方面取得了显著的进展和成果,以下是我们的工作总结。 首先,情感适应方面,我们重视孩子们的心理变化,采取了多种措施帮助他们逐渐适应幼儿园的集体生活。老师们经常给予...
小小赛车会总结MicrosoftWord文档(4).doc
【小小班托班班务工作总结】是对托班一学期工作的全面回顾和总结,主要涵盖了保教工作、平安工作、家长工作以及月份安排等核心内容。 一、现状分析 小小班的幼儿年龄较小,存在多种挑战。一是幼儿普遍存在别离焦虑...
总结来说,"小小Android游戏框架"是一个理想的起点,无论是对于初学者还是希望加深Android游戏开发理解的开发者。通过实际操作贪吃蛇游戏的开发,可以深入理解游戏开发的基本原理和技巧,为后续的项目开发打下坚实的...
兴隆完小小学校信息化工作总结.pdf
在领导的关怀和同事们的协助下,我逐步适应了这个角色,同时也见证了一群可爱的小朋友们的成长。 在日常生活的管理上,我始终注重培养孩子们的良好习惯。由于小班的孩子刚刚接触集体生活,他们的自我照顾能力和规则...
总结,《小小五子棋》虽在界面设计上略显简陋,但作为一款由C++和Qt构建的五子棋游戏,它提供了基本的人机对战体验。随着未来联网对战功能的加入,游戏的可玩性和吸引力将得到进一步提升。同时,对于学习C++和Qt的...
小小班班主任工作计划总结.doc