3、查询 查询是数据库系统中一个十分重要的对象,它用于在一个或多个表内查找某些特定的数据,完成数据的检索、定位和计算的功能,供用户查看。没有查询,就没有应用系统对数据的处理能力。SQL Server2000提供多种查询方式。 内容来自www.paper51.com 汇总查询:对数据表进行统计,如求和、记数、求平均值等; paper51.com
动作查询:对数据表进行生成、删除、替换等; http://www.paper51.com 选择查询:找到符合特定准则的数据信息; copyright paper51.com SQL查询:使用结构查询语言SQL进行查询。 copyright paper51.com 五、功能模块介绍 内容来自www.paper51.com 站内的大部分功能段都自定义成函数,过程的形式,做成一个独立的文件(connect-data.asp文件)有需要用到里面的功能段的时候,只要通过<!--#include virtual=”210.34.144.96/netclass/connect-data.asp”-->这样就能省掉很多重复的写的工作。下面是对几个自定义的函数的说明: paper51.com
1、连接数据库, http://www.paper51.com
连接数据库的方法有很多种,但归纳起来分为两大类,一类是用OLEDB连接数据库,另一类是采用ODBC连接数据库。我是采用无DNS的连接方法,代码如下: 内容来自论文无忧网 www.paper51.com dim conn http://www.paper51.com
Set conn = Server.CreateObject(“ADODB.Connection”) http://www.paper51.com
Conn.Open “Provider=SQLOLEDB; DataSource=host.domain.com;UID=sa; PWD=password; DataBase=Netclass”这样每建立一次数据库连接,就要将这段代码重复一遍,显然没这个必要因此改成函数的形式放在Connect-data.asp文件中,Function GetSQLConnection(computer,uid,pwd,db) 内容来自www.paper51.com dimparams,conn 内容来自论文无忧网 www.paper51.com setGetSQLConnection = nothing paper51.com params = "Provider=SQLOLEDB" 内容来自www.paper51.com params = params & ";Data Source=" & computer http://www.paper51.com params = params & ";User ID=" & uid paper51.com params = params & ";Password=" & pwd copyright paper51.com params = params & ";Database=" & db http://www.paper51.com setconn = Server.CreateObject("ADODB.Connection") 内容来自论文无忧网 www.paper51.com
conn.open params copyright paper51.com setGetSQLConnection = conn http://www.paper51.com
end Function这样,这个函数的兼容性就变得很好。 http://www.paper51.com Dim Conn copyright paper51.com Set Conn = GetSQLConnect(“orientrain”,”sa”,”chaoqun”,”netclass”) paper51.com 我们现在就可以这样就建立了ASP和数据库的连接了。 paper51.com
2、取数据库的数据函数。这里有两种方式,这里是有关于ADO游标的选择。一种是客户机端游标,一种是服务器端游标。默认的情况下是服务器端游标,当我们不希望网络服务器负担过重或网络太拥挤,可以选用这样方式。但是有的情况下是必须用到客户机端游标的。比如数据的分页显示,此时就必须用到客户机端游标。要表明你想使用客户机端游标,必须使用CursorLocation属性。为了适应这样的需要,我写了两个不同的取数据函数:GetSQLData(conn,mysql)及GetStaticSQLData(conn,mysql) 内容来自www.paper51.com Function GetSQLDATA(conn,mysql) paper51.com dim rs 内容来自论文无忧网 www.paper51.com set GetSQLDATA = nothing copyright paper51.com
set rs = Server.CreateObject("ADODB.Recordset") paper51.com
rs.open mysql,conn,adOpenKeyset,adLockOptimistic,adCmdText copyright paper51.com set GetSQLDATA = rs 内容来自论文无忧网 www.paper51.com End Function 内容来自论文无忧网 www.paper51.com '------------------------------------------------------------------------------------- paper51.com Function GetStaticSQLDATA(conn,mysql) copyright paper51.com dim rs paper51.com set GetStaticSQLDATA = nothing paper51.com set rs = Server.CreateObject("ADODB.Recordset") paper51.com rs.CursorLocation = adUseClientBatch paper51.com
rs.open mysql,conn,adOpenStatic,adLockReadOnly,adCmdText 内容来自论文无忧网 www.paper51.com
set GetStaticSQLDATA = rs http://www.paper51.com End Function paper51.com ‘---------------------------------------------------------------------------------------- copyright paper51.com
函数GetSQLDATA未对rs的CursorLocationj进行定义,默认的情况下为服务器端游标(adUseServer)函数GetStaticSQLDATA定义了rs.CursorLocation = adUserClientBatch为客户机端游标。 内容来自论文无忧网 www.paper51.com
3、取得指定的文件夹,取得指定的文件夹其实没有什么用处,但是我们可以使用其files属性取得该文件夹下的所有文件。这样我就可以做一个任意的一个文件夹作为共享文件夹,可以接受上传的文件,而这些文件就可以直接映射成网页内的一个超连接。代码是: paper51.com Function GetFolder(path) http://www.paper51.com dim fso http://www.paper51.com
dimobjFolder paper51.com
SetGetFolder = nothing copyright paper51.com set fso =Server.CreateObject("Scripting.FilesystemObject") paper51.com
SetobjFolder = fso.GetFolder(path) http://www.paper51.com
SetGetFolder = objFolder 内容来自www.paper51.com Set fso =nothing copyright paper51.com End Function copyright paper51.com 我只要通过调用该函数就可以取得我想要的文件夹下的所以文件如 copyright paper51.com
dim path,Folder http://www.paper51.com path = “d:\document” 内容来自www.paper51.com Set Folder=GetFolder(path) 内容来自www.paper51.com For each aa in Folder.files http://www.paper51.com Response.write aa.name &”<br>” 内容来自论文无忧网 www.paper51.com
Next 内容来自www.paper51.com 这样就可以把该文件夹下的所以文件名列出来。该函数主要用于一些打包过的教程、课件的下载。 内容来自论文无忧网 www.paper51.com 4、表单数据二进制提交法。当一个提交的表单中含有文件上传选项时,必须用到这种方法,或者所提交的数据会丢失,但是这就涉及到字符转换的问题,各不同提交数据的边界问题。我们必须将这些提交的数据进行分离,然后再转化回数据的原貌。特别是对于中文字符的处理。 copyright paper51.com
ASP的内置对象Request的BinaryRead方法。该方法从客户端获得数据,并把数据存储在SafeArray中。SafeArray是一个数组,其中包含维数以及各维的上下限的信息。通过试验总结知道,它的界限是类似”-----------------------------7d239dab076e”的字符串。我们可以取得该字符串,然后应用instrb(),leftb(),rightb(),lenb(),midb()这几个函数就可以轻松记得我们想要的数据了。具体代码如下: 内容来自论文无忧网 www.paper51.com
Sub BuildUploadRequest(RequestBin) 内容来自论文无忧网 www.paper51.com
dim PosBeg 内容来自论文无忧网 www.paper51.com
dim PosEnd http://www.paper51.com
dim boundary copyright paper51.com dim boundaryPos copyright paper51.com
dim Pos 内容来自www.paper51.com dim Name 内容来自www.paper51.com dim Value 内容来自www.paper51.com dim PosFile http://www.paper51.com dim PosBound paper51.com dim FileName 内容来自www.paper51.com dim ContentType paper51.com dim UploadControl http://www.paper51.com
'取得分界符号 copyright paper51.com
PosBeg = 1 内容来自论文无忧网 www.paper51.com PosEnd =InstrB(PosBeg,RequestBin,getByteString(chr(13))) paper51.com
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg) paper51.com
boundaryPos =InstrB(1,RequestBin,boundary) paper51.com '取得边界字符内所以的数据 paper51.com Do until(boundaryPos=InstrB(RequestBin,boundary & getByteString("--"))) copyright paper51.com '将所以的变量附给一个对象object 内容来自论文无忧网 www.paper51.com Set UploadControl = CreateObject("Scripting.Dictionary") 内容来自www.paper51.com '取得对象名字 paper51.com Pos= InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition")) http://www.paper51.com Pos= InstrB(Pos,RequestBin,getByteString("name=")) paper51.com PosBeg = Pos+6 copyright paper51.com
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34))) copyright paper51.com
Name= getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg)) 内容来自www.paper51.com PosFile =InstrB(BoundaryPos,RequestBin,getByteString("filename=")) 内容来自www.paper51.com
PosBound = InstrB(PosEnd,RequestBin,boundary) http://www.paper51.com '检测 copyright paper51.com If PosFile<>0 AND(PosFile<PosBound) Then http://www.paper51.com '取得上传文件Filename,content-type和content paper51.com PosBeg = PosFile + 10 内容来自www.paper51.com
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34))) 内容来自论文无忧网 www.paper51.com FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg)) 内容来自www.paper51.com '把文件名加到对象中 内容来自论文无忧网 www.paper51.com UploadControl.Add "FileName", FileName paper51.com Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:")) http://www.paper51.com PosBeg = Pos+14 内容来自www.paper51.com PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13))) 内容来自www.paper51.com ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg)) http://www.paper51.com
UploadControl.Add "ContentType",ContentType paper51.com PosBeg = PosEnd+4 内容来自论文无忧网 www.paper51.com PosEnd = InstrB(PosBeg,RequestBin,boundary)-2 内容来自论文无忧网 www.paper51.com
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg) paper51.com Else 内容来自www.paper51.com Pos = InstrB(Pos,RequestBin,getByteString(chr(13))) copyright paper51.com PosBeg = Pos+4 copyright paper51.com PosEnd = InstrB(PosBeg,RequestBin,boundary)-2 paper51.com Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg)) http://www.paper51.com
EndIf paper51.com UploadControl.Add "Value" ,Value 内容来自www.paper51.com UploadRequest.Add Name, UploadControl copyright paper51.com BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary) http://www.paper51.com Loop copyright paper51.com End Sub 内容来自www.paper51.com
|