一个Java 和数据库的问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 07:37:03
// Java ---SQL Server2000

诸位高手,问题是这样的:

表结构为: 用户名,性别,年龄.....

Java的一组变量里存了查询的关键字,比如

String ID=“张三”
Char Sex=M
Int Age=18

那么我查询的时候可以用 ..... WHERE 用户名=ID and ......

但是有这么一种情况,当不限定某一关键字时 比如查询“所有 Age=18的用户”,那么ID 和Sex 都是 Null或者0吧,那么 我的Java语句和SQL语句该怎么写呢?

-------------------------

还有就是日期,每条记录有一个 “注册日期” (假设格式为“2008年9月1日”或者YY-MM-DD)

那么我要查询 一段时间内的所有记录,如2005年3月1日到2008年8月1日 间的所有记录,又该怎么写Java语句和SQL呢?

----------------------------------------
感谢,几位的热心帮助。

方法我理解,但是我的情况是有10几个关键字要查,就是查询条件有10几个,任意组合,可能里面有7-8个是有数值,其他5-6个值为0(即忽略该条件)

那么如果要用1楼的方法,那代码就太复杂。

似乎有一种 SQL语句带问号的?

如果查询所有age=18的记录,完全不用管其它的,就直接:

WHERE age=18

就好了。

日期是可以比较大小的,2005.3.1到2008.8.1之间的记录可以表示为:
WHERE theDate > 20050301 and theDate < 20080801

1。先回答你第一个问题:那么ID 和Sex 都是 Null或者0吧,那么 我的Java语句和SQL语句该怎么写呢? 思路简单,就直接给你代码
boolean needWhere=false;
if(ID!=null||Sex=='M'||Sex=='F'||Age>0){
needWhere=true;
}
String sql="select * from table ";
if(needWhere){
sql+=" where " ;
}
if(ID!=null){
sql+=" 用户名=\""+ID+"\" ";
}
if(Sex=='M'||Sex=='F'){
sql+=" 性别=\""+Sex+"\" ";
}
if(Age>0){
sql+=" 年龄="+Age+" ";
}
第二个,关于时间的处理,2005年3月1日到2008年8月1日 间的所有记录 的查询:
String from="2005-3-1";
String to="2008-8-1";
sql+=" 注册日期 between \""+from+"