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

作者&投稿:贺俗 (若有异议请与网页底部的电邮联系)
ASP中数据库查询功能如何实现~

看下面的代码是不是能帮助你
<%
'取得上一页中点击的省市
sheng = Request.QueryString("sheng")
shi = Request.QueryString("shi")

Sql = " 1=1 "

If sheng"" Then
Sql = Sql &" And sssheng='"&sheng&"' "
End If

If shi"" Then
Sql = Sql &" And ssshi='"&shi&"' "
End If

Sql = "Select * From xyz Where "&Sql&" Order By Id Desc"
Set Rs = Server.CreateObject("Adodb.RecordSet")
Rs.Open Sql,Conn,1,1
Do While Not Rs.Eof
'显示数据,格式按自己需要更改
Response.Write "id:"&Rs("id")&"---sssheng:"&Rs("sssheng")&"---ssshi:"&Rs("ssshi")&""
Rs.MoveNext
Loop
Rs.Close
Set Rs = Nothing
%>

一, 查询条件放在排序前面。
sql="select top 10 * from [A] where [b]=1 order by [d] asc"

二,可一把查询条件换成变量,如 n
n=1
sql="select top 10 * from [A] where [b]="&n&" order by [d] asc"
这样可以通过修改变量n的完成

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

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

1,让提交表单和查询结果在同一个页面上,就是那个页面是可以反复查询的,代码怎么编??

页面里搞个判断吗,比如用GET传递变量,xx.asp?out=true 这样如果request("out")="true" 就输出结果,不=就不输出查询结果,或者可以根据是否有提交查询条件来决定是否输出查询结果,并不影响表单的输出

2,表单提交后下拉列表的值又变成了原来的值,要怎么设置才能让那个值在提交后不还原呢

每次处理查询条件的时候 把查询条件记录下来,输出下拉框时进行判断,碰到相同选项就 输出selected默认选中,如<option selected>部门1</option>

3,查询代码

先定义前半截SQL语句 SQL="SELECT * FROM 表dep WHERE 1=1"(此处1=1以方便衔接下面语句)

然后判断查询条件,假如需判断部门,则SQL=SQL&" and 部门=什么部门"

然后判断是否需要查询设备类型,如需要则,SQL=SQL&" and 类型=什么类型"

最后可加上排序SQL=SQL&" ORDER BY 什么顺序"

呵呵 修改提交之后,时间就变了。

【connect.cfg】文件
<%
set connect=server.createobject("adodb.connection")
constr="provider=microsoft.jet.oledb.4.0;data source=" & datafile '【设置数据库】
connect.open constr
set rs=server.createobject("adodb.recordset")
%>

【index.asp】文件
<!--#include file="connect.cfg"-->

<form name="form1" method="post">

<!-- 【部门】
<select name="select">
<option value="*">不区分</option> //【这里是所有部门】
<option>部门1</option>
<option>部门2</option>
<option>部门3</option>
</select>
-->

<%
'从【数据库】表中动态读取所有部门

sql='select 【部门字段】 from 【表名】 order by 【部门字段】'
rs.open sql,connect,1,1

response.write("<select name='select'>")
response.write("<option value="*">不区分</option>")

while not rs.eof
if request.form("select")=rs(0) then
response.write("<option selected>" &rs(0) & "</option>") '这里实现【选中】功能
else
response.write("<option>" &rs(0) & "</option>")
rs.movenext
wend
response.write("</select>")

'读取【设备】名称

%>

<select name="select2">
<option value="*">不区分</option> 【这里是所有设备】
<option>设备1</option>
<option>设备2</option>
<option>设备3</option>
</select>
<input type="submit" name="Submit" value="查询">
</form>
</body>
</html>

<%

if request.form("select")="*" then
sqlwhere=sqlwhere+"1=1" 【这里是所有部门】
else
sqlwhere=sqlwhere+"部门='"+request.form("select")+"'"
end if

sqlwhere=sqlwhere+" and "

if request.form("select2")="*" then
sqlwhere=sqlwhere+"1=1" 【这里是所有设备】
else
sqlwhere=sqlwhere+"设备='"+Request.form("select2")+"'"
end if

sql = "SELECT * FROM " +sqlwhere '【这里设置你的数据库 附加条件】
rs.open sql,connect,1,1

'【显示结果】

response.write "<TABLE BORDER=1>"

' if 中实现读取表头
if not rs.eof then
response.write "<tr>"
response.write "<td>表标题</td>"

for i=0 to rs.fields.count-1
if i/rs.fields.count-1=0 then response.write "<br>"
response.write "<td>" & rs(i).name & " </td>"
next
response.write "</tr>"
end if

rs.movefirt '设置到第一条记录

'读取表体部分
while not rs.eof
response.write "<td>" & rs(0) & " </td>"
response.write
response.write "</tr>"
wend

rs.close
set rs=nothing
connect.close
set connect=nothing
%>

asp操作access数据库查询--求救高手!
答:<%name1=request.querystring("name1")%> // 获得查询T1表里面的no1参数,< set rs2=server.createobject("adodb.recordset")exec2="select name2 from t2 where name2=""&name1&"rs2.open exec2,conn,1,1 > < set rs=server.createobject("adodb.recordset")exec="select no3 from t3 ...

在asp中,如何检索数据库,显示下面这样一个表?
答:'查询数据库 set rs = conn.execute("select * from 表名 order by 预定时间的字段名 ASC")'循环显示所有内容 do while not rs.bof and not rs.eof > 月份 <%=rs("场地名称的字段名")%> <%=rs("预定人的字段名")%> <%=rs("预定时间的字段名")%> < rs.movenext loop > ...

用ASP与SQL怎样实现数据的添加、查询、修改 删除
答:分为三个步骤 第一个连接到数据库 你现在是ASP新手,您可以网上先搜索一下连接SQL数据库代码.一般都搜索的到.第二步 打开一个表进行读取,更新,添加,删除.一般为 rs.addnew rs.update rs.delete 新建 更新 删除 打开表我用的方法是 set rs=server.createobject("adodb.recordset")sql="select from ...

asp+access数据库查询字段
答:用select语句,调出相关的表中相应的字段,做个页面让它们显示出来就行了 Set conn = Server.CreateObject("ADODB.Connection")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("data.mdb")sql = "select * from data"Set rs = Server.CreateObject("ADODB.RecordSet")rs...

asp查询数据库并输出结果
答:你的意思是在A页查询出来,B页显示查询结果。其实很简单,在A页应该有个文本框和一个查询按钮,点击提交到B页面,同时把文本框的值传到B页面,然后在B页里写查询语句select * from table where zl='获取过来的文本框的值也就是10g' 就可以了 很简单的,在A页面什么都不用做,只要有个表单可以...

求ASP中用SQL查询三个数据库,更新数据
答:select * from ZhengJian where Z_jiangjin='未计算'"set rs=conn.execute(sql)do while not rs.eofset rs1=conn.execute("select D_mc from Dengji where D_Dengji='"&rs("Z_zsdengji")&"'")if not(rs1.eof and rs1.bof) thenD_mc=rs1("D_mc")elseresponse.write("数据表1数据...

asp+access数据查询
答:注意修改程序中的数据库名,地址,字段名 < key=split(request("key"))num=ubound(key)for i=0 to num if i<=num and key(i)<>"" and isnumeric(key(i))=true then rkey=key(i)end if next if rkey="" then response.write "alert('内容格式不对请重新输入!');location='"&reque...

ASP怎样根据输入的条件从数据库中检索内容
答:select * from title like '%查询字符%'

如何在一个asp页面中,实现数据的输入与查询
答: 然后在search.asp页面写入数据库查询语句就可以了,简单点就是:id=trim(request("keywords"))set rs=server.createobject("adodb.recordset")rs.open("select * from Employees where id="&id),conn,1,1 以下就是显示了。如果要在同一页面显示,定义为框架就行了 ...

求ASP高手帮忙做一个数据库查找页面,任务完成再给100积分。说情请入内...
答:response.write "数据库连接出错!"Response.End else conn.open connstr if err then err.clear set conn=nothing response.write "数据库连接出错!"Response.End end if end if Sub CloseConn()conn.close set conn=nothing End Sub '按关键字查询 Col="name,summary,quantity,date"tableName="...