首先不推荐使用SELECT *,最好是你要使用哪些字段,就列出那些字段.
SELECT 备编号,设备名称,设备类型,使用年限,所属部门 FROM 表名
WHERE 所属部门=[选中的部门] AND 设备类型 = [选中的类型]
我想你SQL语句应该会写,这个地方难点在于,你检索的条件,不一定同时出现,有可能只出现一个,
即
SELECT 备编号,设备名称,设备类型,使用年限,所属部门 FROM 表名
WHERE 所属部门=[选中的部门]
或
SELECT 备编号,设备名称,设备类型,使用年限,所属部门 FROM 表名
WHERE 设备类型 = [选中的类型]
还有最初的一条
这三条检索词句都可能出现.这个也是开发时常遇到的动态SQL问题
在程序中,执行SQL语句的是API提供的方法,一般只要传一个字符串即可,
那我们就可以在字符串上做手脚.
首先创建一个条件为真的SQL语句.
String strSQL = "SELECT 备编号,设备名称,设备类型,使用年限,所属部门 FROM 表名 WHERE 1=1 "
这条SQL执行的结果,与不加WHERE的结果是相同的,
这样做了以后,条再有变化就可以添加字符串" AND 字段=表达式 "
这样的字符串,以达到运态SQL所要求的效果.
以你的问题举例
if 部门选择了
strSQL += "AND 所属部门=选中的部门 ";
if 部门选择了
strSQL += "AND 设备类型 = 选中的类型 ";
这样,根据选择的不同可以得到三种SQL
SELECT 备编号,设备名称,设备类型,使用年限,所属部门 FROM 表名
WHERE 1=1 AND 所属部门=[选中的部门]
SELECT 备编号,设备名称,设备类型,使用年限,所属部门 FROM 表名
WHERE 1=1 AND 设备类型 = [选中的类型]
SELECT 备编号,设备名称,设备类型,使用年限,所属部门 FROM 表名
WHERE 1=1 AND 所属部门=[选中的部门] AND 设备类型 = [选中的类型]
这样应该可以达到你想要的结果了
这个要注意的是,在你写的字符串后,都要加一个空格,
要不然拼出来的结果就是
SELECT 备编号,设备名称,设备类型,使用年限,所属部门 FROM 表名
WHERE 1=1AND 所属部门=[选中的部门]AND 设备类型 = [选中的类型]
AND与前面的表达式挨在一起了,这样,这就不是一个合法的SQL语句,这点要注意
这也是在实际中常遇到的问题
就是那个页面是可以反复查询的,代码怎么编
对于这个问题很迷惑,你做完查询以后,不是回到这个页吗?这个问题实再不知道你想问什么
表单提交后下拉列表的值又变成了原来的值,
这个是正常的,因为页面刷新后,页面上的控件如时不控制的话,都会变成初始状态.
这个需要手动控制,
<select name="sel">
<option value="0"> </option>
<option value="1">>部门1</option>
<option value="2">>部门2</option>
<option value="3">>部门3</option>
</select>
假如说你提交的是部门3,你得到了3这个值,那么在回到页面时,你要在option中加上selected这个标记,即
<select name="sel">
<option value="0"> </option>
<option value="1">>部门1</option>
<option value="2">>部门2</option>
<option value="3" selected>>部门3</option>
</select>
一船的做法是,记住提交的值.
<select name="sel">
<option value="0"> </option>
<option value="1" <% if(value==1){out.println("selected");}%>>>部门1</option>
<option value="2" <% if(value==2){out.println("selected");}%>>>部门2</option>
<option value="3" <% if(value==3){out.println("selected");}%> >>部门3</option>
</select>
以上是JSP代码,你可以参考一下,
这样页面刷新后,就可以保持住你选择的那个选项的状态了
温馨提示:答案为网友推荐,仅供参考