求助~~ASP实现数据库查询

求助~~ASP实现数据库查询,第1张

首先不推荐使用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代码,你可以参考一下,

这样页面刷新后,就可以保持住你选择的那个选项的状态了

    '定义链接

    set conn=Server.CreateObject("ADODB.Connection")

    conn.open "provider=sqloledb.1Persist Security Info=falsedata source=数据库地址User ID=用户名pwd=用户密码Initial Catalog=数据库名字"

    '定义表 

    Set ds=Server.CreateObject("ADODB.Recordset")

    '查询语句

    sql="select * from Table1"

    '查询

    ds.open sql,conn,1,1

    '循环绑定

    Do While Not ds.Eof

        Response.Write "<li><span>"&ds("date")&"</span><span>"&ds("id")&"</span></li>"

        ds.Movenext

    Loop

    '关闭对象

    ds.CLose

    Set ds=Nothing

    conn.CLose

    Set conn=Nothing

'第一处,请注意橙色语法部分

sql="select * from zhang"rs.open sql,conn,1,1

If Not (rs.bof And rs.eof) Then '不为空时显示

    do while not rs.eof%>'<%= rs("hao") %>',<% rs.movenext

    loop

Else

    response.write "没有数据"

End If

rs.close

'第二处,请注意橙色语法部分

sql="select * from zhangdan where hao='"&request("danhao")&"'"

rs.open sql,conn,1,3

If Not(rs.bof And rs.eof) Then '不为空时,表示有数据才能更新

    if request("act")="mod" then

    rs.update

End If

rs.close


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9990088.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存