`
shenzhw
  • 浏览: 63105 次
  • 性别: Icon_minigender_1
  • 来自: 福州
文章分类
社区版块
存档分类
最新评论

根据用户输入查询条件的个数动态拼SQL

阅读更多
今天终于想出了个电子把这个问题解决了。记录一下:
package com.sysnet.test;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class Test {

	public static void main(String[] args){
		TestVO vo=new TestVO();
		vo.setAge(2);
		vo.setName("shenzhw");
		vo.setDesc("sdag");
		try{
			new Test().t(vo);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	//要对VO中的数据类型加以判断
	public void t(TestVO vo) throws NoSuchMethodException,InvocationTargetException,IllegalAccessException{
		Field[] fields=vo.getClass().getDeclaredFields();
		Map<String,Object> valueMap=new HashMap<String,Object>();
		for(int i=0;i<fields.length;i++){
			Field f=fields[i];
			String name=f.getName();
			String method="get" + name.substring(0, 1).toUpperCase() + name.substring(1);
			Method getMethod=vo.getClass().getMethod(method, new Class[]{});
			Object value=getMethod.invoke(vo, new Object[]{});
			
			if(value!=null){
				valueMap.put(name, value);
			}
			
			
		}
		StringBuffer sql=new StringBuffer("select * from t");
		if(valueMap.size()>0){
			sql.append(" where ");
		}
		Iterator<String> iter=valueMap.keySet().iterator();
		String key=iter.next();
		sql.append(key + "=" + valueMap.get(key));
		while(iter.hasNext()){
			String k=iter.next();
			sql.append(" and " + k + "=" + valueMap.get(k));
		}
		System.out.println(sql.toString());
	}
}
分享到:
评论

相关推荐

    使用SQL语言实现数据动态查询 (1).pdf

    SQL 语言提供了 SELECT 语句进行数据库的查询,该语句具有灵活的使用方式和丰富的功能,使用户可以在程序运行过程中根据需要输入条件子句中的某些变量的值。 然而,在有些情况下仍显不足,比如,有时查询条件的个数...

    Oracle动态SQL4方法分析与应用.pdf

    动态SQL技术允许在程序执行时根据用户的输入构造SQL语句,它在编写程序时不需要确定具体的字段和查询条件。这种技术在不知道具体使用哪些字段或条件时非常有用,可以提高程序的通用性和灵活性。动态SQL处理过程包括...

    SQL查询数据库中符合条件的记录的总数

    1. select count(*) from table; //统计元组个数 2. select count(列名) from table; //统计一列中值的个数 3. select count(*) from table where 字段 = “”; //符合该条件的记录...就可以根据是否需要加条件,在

    sql查询表中某字段下所有重复的记录

    sql查询表中某字段下所有重复的记录,删除某字段下重复记录最小的那笔记录

    ORACLE数据库中动态SQL在Sun工作站上的使用.pdf

    动态SQL的处理过程可以分为四个步骤:首先,提示用户输入动态语句文本及该语句中所用的实宿主变量的值;其次,分析该语句,检查语法规则和引用有效的数据库对象,并检查数据库的存取权限,保留需要的资源,并找到...

    关于Oracle数据库动态SQL数据获取应用方法的研究与实践.pdf

    动态SQL使得数据库应用程序能够处理不确定性和变化性,如动态构造的查询,或者基于用户输入的数据等。 动态SQL方法在处理SQL语句时提供了高度的灵活性,但也增加了程序的复杂性。例如,程序员必须负责处理输入宿主...

    统计你输入的正负数的个数

    这个任务通常涉及读取用户输入,处理数据,然后进行计数。这里我们将详细探讨如何实现这一功能,特别是使用C++语言。 首先,我们需要理解问题的核心:我们需要一个程序,能够不断接收用户的输入,直到用户输入0为止...

    sql高级查询50题.docx

    "SQL高级查询50题" SQL 高级查询是数据库管理中的一种重要技术,能够帮助开发者和数据库管理员更好地管理和维护数据库。下面是50个 SQL 高级查询题目的知识点总结: 查询“001”课程比“002”课程成绩高的所有...

    Sql经典练习题库(附答案)

    以上练习题覆盖了SQL中的各种核心概念和技术,包括子查询、连接(JOIN)、聚合函数(如COUNT、SUM)、条件语句(如IN、ANY、ALL)等。这些练习有助于加深对SQL的理解,并提高解决实际问题的能力。

    计算键盘上所有输入字符的个数

    总的来说,计算键盘输入字符的个数看似简单,但实际涉及到字符编码、字符串处理、性能优化等多个方面的知识。通过学习和实践这样的程序,我们可以提升对文本处理的理解,同时锻炼我们的编程技巧。

    如何运用动态SQL语句实现对数据窗口的动态操作.pdf

    通过上述方法,可以实现在程序运行时根据实际情况动态生成SQL语句并执行,以及动态地操作数据窗口控件,从而提高软件的灵活性和可维护性。 总的来说,动态SQL语句和数据窗口控件的动态创建技术是数据库应用开发中的...

    C语言实验)输入若干非0实数直到输入0停止,要求输入的实数最大不超过20个,统计其中正数个数和负数个数。

    在本C语言实验中,我们将实现一个程序,它能够接收用户输入的一系列非零实数,直到用户输入0为止。程序的主要目标是统计输入的这些实数中正数和负数的数量,且限制输入的实数总数不超过20个。下面我们将详细探讨这个...

    oracle查询表的结构 和表的个数

    如果需要查询当前用户有访问权限的所有表(包括自己的和其他用户的),则可以使用 `ALL_TABLES` 视图: ```sql SELECT table_name FROM all_tables; ``` `ALL_TABLES` 视图包含了当前用户可以访问的所有表的信息,...

    SQL高级查询.pdf

    根据给定的信息,我们可以将知识点概括为以下几个方面: ### 一、数据库的创建与管理 #### 1. 创建数据库 - **数据库名称**: `studydb` - **要求**: - 必须包含主要文件(Primary File)、日志文件(Log File)...

    输入一页文字,程序可以统计出文字、数字、空格的个数。

    6. **输入输出处理**:程序需要读取用户输入的文本,可以使用C语言的`fgets()`函数逐行读取。输出方面,除了统计结果外,还需要按照原格式输出文本,这就需要保持原始的行结构。 7. **用户界面**:虽然题目没有明确...

    创建一个存储若干随机整数的文本文件,文件名、整数的个数以及范围均由键盘输入。

    在编程领域,尤其是在Java语言中,创建一个存储若干随机整数的文本文件是常见的任务,这涉及到文件操作、随机数生成以及用户输入等基础知识。在这个课题中,我们主要关注以下几个关键知识点: 1. **文件操作**:在...

    用动态SQL方法4连接Oracle的实现

    用动态SQL方法4连接 Oracle 的实现 ...动态SQL的第4种方法通过SQLDA(The SQL Descriptor Area)和oracle内部交换数据,可以执行直到程序运行时还不知道选择表项或虚拟输入宿主变量的个数和类型的SQL语句。

    sql查询语句练习(解析版) by 荒唐的达达7

    ### SQL 查询语句练习知识点详解 #### 一、SQL 表结构及数据插入 - **学生表 (Student):** - `S#` (学生编号): varchar2(20) - `Sname` (学生姓名): varchar2(10) - `Sage` (学生年龄): int - `Ssex` (学生性别...

    SQL语句查询数据库中重复记录的个数

    代码如下:select a,b,c,count(*) from (select c.a,c.b,c.c from test c) having count(*) &gt;= 2 group by a,b,c 或者 代码如下:select zdbh,... 您可能感兴趣的文章:用SQL语句查询数据库中某一字段下相同值的记录方法

    SQL Server 2005范例代码查询辞典

    《SQL Server 2005范例代码查询辞典》主要涵盖了如何在T-SQL代码中运用SQL Server 2005内置函数,包括聚合函数、数学运算、字符串操作等。其中,聚合函数是用于对一组值进行计算并得出单一值的函数,如SUM、AVG、...

Global site tag (gtag.js) - Google Analytics