|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
对用户来说可预见费用、节约费用,可以做到花少钱办大事。由于省去了购买软件和硬件等的前期费用,用户可以租用较高级的应用软件。ASP的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。数据|数据库 择要:
本文会商使用ASP存取DBF、DBC、MDB、Excel、SQLServer型数据的办法及函数完成,最初给出一个使用本文供应的函数存取Excel型数据库的例子,对企奇迹数据重用及共享具有很强的实践意义。
关头词:
ASP数据库存取DBFDBCMDBExcelSQLServer
媒介
在Internet/Intranet网页上到处可见留言板、会商组、网上投票、网上查询拜访、谈天室等Internet功效模块,这些程序都是使用ASP(ActiveServerPage)与数据库手艺分离而完成的。在Internet/Intranet上用的数据库多数是mdb数据库或SQL<数据库,可是在企奇迹Intranet<网中,各类版本的数据库已存在如DBF<、DBC、Excel、文本数据库,这些数据库是由使用软件如办公主动化体系、财政软件等所天生,假如ASP能间接使用这些范例数据库,就不必要从头创建数据库,进一步完成企业数据共享,事实这些数据库能不克不及间接被ASP利用,笔者经由临时切磋总结出给出一定的谜底。
1、ASP的工具存取数据库办法
在ASP中,用来存取数据库的工具统称ADO(ActiveDataObjects),次要含有三种工具:Connection、Recordset、Command,个中Connection卖力翻开或毗连数据库,Recordset卖力存取数据表,Command卖力对数据库实行举动查询(ActionQuery)命令和实行SQLServer的StoredProcedure。只依托这三个工具仍是没法存取数据库的,还必需具无数据库存取的驱动程序:OLEDB驱动程序和ODBC驱动程序。关于任何一种数据库都必需有绝对应的OLEDB驱动程序和ODBC驱动程序,ADO<才干对数据库举行存取。存取历程可用下图形貌:
由上图可知,ADO工具必需与各类驱动程序分离才干存取各类范例数据库,分歧的数据库必要分歧的驱动程序。事实呆板上已安装哪些驱动程序呢?可经由过程以下的办法来考证:Windows9X或NT的“入手下手”→“设置”→“把持面板”→“ODBCDataSource(32Bit)”中的“驱动程序”标签页查证我们的呆板上事实装了哪些驱动程序。大抵有以下表所列的驱动程序:
Microsoft.Jet.OLEDB.4.0
Mdb
MicrosoftAccessDriver
Access
MicrosoftdBaseDriver
Dbase
MicrosoftExcelDriver
Excel
MicrosoftVisualFoxProDriver
Dbc
SQLOLEDB.1
SQLServer7.0
2、毗连数据库和翻开数据表
分歧的数据库毗连办法纷歧样(即创建Connection的实例办法纷歧样),一旦创建Connection实例终了,使用Recordset工具举行存取数取数据的办法迥然不同,上面关于分歧的数据范例,编写了绝对应的毗连函数,其原型以下:
1)FunctionCreatMdbRecordset(数据库文件名,数据表文件名或Select语句);创建Mdb范例的数据库工具
2)FunctionCreateSecuredMdbRecordset(数据库文件名,数据表文件名或Select语句,暗码);创建带暗码的MDB范例的数据库工具;
3)FunctionCreateDbfRecordset(目次名,DBF文件名或Select语句);创建DBF范例的数据库工具;
4)FunctionCreateDbcRecordset(DBC数据库文件名,数据表名或Select语句);创建DBC范例的数据库工具;
5)FunctionCreateExcelRecordset(XLS文件名,Sheet名);创建Excel范例的数据库工具;
6)FunctionCreateSQLServerRecordset(盘算机称号,用户ID,用户暗码,数据库称号数据表或检察表或Select指令);创建SQLServer范例的数据库工具;
3、程序清单
以下程序用VBScript编写
1)创建MdbRecordset工具,Mdb数据库是一个完全的数据库,外部大概含有多少个数据表,在此函数中,Connection的感化是毗连数据库,Recordset的感化是翻开数据表。
FunctionCreateMdbRecordset(数据库文件名,数据表名或Select语句)
Dimconn,Provider,DBPath
创建Connection工具
Setconn=Server.CreateObject("ADODB.Connection")
Provider="Provider=Microsoft.Jet.OLEDB.4.0;"
DBPath="DataSource="&Server.MapPath("数据库文件名")
翻开数据库
conn.OpenProvider&DBPath
SetCreateMdbRecordset=Server.CreateObject("ADODB.Recordset")
翻开数据表,参数二为Connection工具
CreateMdbRecordset.Open"数据表名",conn,2,2
EndFunction
2)创建带暗码的Mdb数据库的Recordset工具,它的创建体例与创建不带暗码的Mdb数据库的Recordset工具相似,只是多了一个暗码参数,即在与数据库毗连时,必需给出暗码信息。
FunctionCreateSecuredMdbRecordset(数据库文件名,数据表名或Select语句,password)
Dimconn,Provider,DBPath
创建Connection工具
Setconn=Server.CreateObject("ADODB.Connection")
Provider="Provider=Microsoft.Jet.OLEDB.4.0;"
DBPath="DataSource="&Server.MapPath("数据库文件名")
毗连数据库,注重上面一行带有暗码参数
conn.OpenProvider&DBPath&”JetOLEDB:DatabasePassword=”&assword
SetCreateSecuredMdbRecordset=Server.CreateObject("ADODB.Recordset")
翻开数据表,参数二为Connection工具
CreateSecuredMdbRecordset.Open"数据表名",conn,2,2
EndFunction
3)DBF文件不是一个尺度的数据库文件,只相称于尺度数据库文件中的一个数据表,以是为了利用DBF文件,接纳把一切的DBF文件放在一个目次下,如许把目次名当作尺度数据中的数据库表,每个DBF文件相称于尺度数据库的数据表。上面函数中Directory是DBF地点的目次名,
FunctionCreateDbfRecordset(目次名,DBF文件名或Select语句)
Dimconn,Driver,SourceType,DBPath
创建Connection工具
Setconn=Server.CreateObject("ADODB.Connection")
Driver="Driver={MicrosoftVisualFoxProDriver};"
SourceType="SourceType=DBF;"
DBPath="SourceDB="&Server.MapPath("目次名")
挪用Open办法翻开数据库
conn.OpenDriver&SourceType&DBPath
SetCreateDbfRecordset=Server.CreateObject("ADODB.Recordset")
翻开DBF文件,参数二为Connection工具
CreateDbfRecordset.OpenDBF文件名或Select语句,conn,2,2
EndFunction
4)由Foxpro天生的DBC数据库与MDB数据库类似,都是一个数据库包括几个数据表的情势,以是对DBC数据库的存取办法与MDB数据库类似。
FunctionCreateDbcRecordset(DBC数据库文件名,数据表名或Select语句)
Dimconn,Driver,SourceType,DBPath
创建Connection工具
Setconn=Server.CreateObject("ADODB.Connection")
Driver="Driver={MicrosoftVisualFoxProDriver};"
SourceType="SourceType=DBC;"
DBPath="SourceDB="&Server.MapPath("DBC数据库文件名")
毗连数据库
conn.OpenDriver&SourceType&DBPath
SetCreateDbcRecordset=Server.CreateObject("ADODB.Recordset")
翻开数据表,参数二为Connection工具
CreateDbcRecordset.Open"数据表名或Select语句",conn,2,2
EndFunction
5)将Excel97或Excel2000天生的XLS文件(book)当作一个数据库,个中的每个事情表(sheet)当作数据库表。
FunctionCreateExcelRecordset(XLS文件名,Sheet名)
Dimconn.Driver,DBPath
创建Connection工具
Setconn=Server.CreateObject("ADODB.Connection")
Driver="Driver={MicrosoftExcelDriver(*.xls)};"
DBPath="DBQ="&Server.MapPath("XLS文件名")
挪用Open办法翻开数据库
conn.OpenDriver&DBPath
SetCreateExcelRecordset=Server.CreateObject("ADODB.Recordset")
翻开Sheet,参数二为Connection工具,由于ExcelODBC驱动程序没法间接用sheet名来翻开sheet,以是请注重以下的select语句
CreateExcelRecordset.Open"Select*From["&sheet&”$]”,conn,2,2
EndFunction
6)SQLServer属于Server级的数据库,利用时请求对照严厉,必需请求输出用户名及暗码才干利用。
FunctionCreateSQLServerRecordset(盘算机称号,用户ID,用户暗码,数据库称号数据表或检察表或Select指令)
DimParams,conn
SetCreatSQLServerConnection=Nothing
Setconn=Server.CreateObject("ADODB.Connection")
Params="Provider=SQLOLEDB.1"
Params=Params&";DataSource="&Computer
Params=Params&";UserID="&UserID
Params=Params&";Password="&Password
Params=Params&".InitialCatalog="&数据库称号
ConnopenParas
SetCreateSQLServerRecordset=Server.CreateObject("ADODB.Recordset")
CreateSQLServerRecordset.Opensource,conn,2,2
EndFunction
使用下面的函数就能够翻开经常使用范例的数据库,然后使用ADO的Recordset工具的增添纪录、删除纪录、修正纪录等功效就能够对数据库举行操纵。可是要申明的是,在实践开辟中我们发明,假如利用DBF、DBC、Excel数据库,实行效力没有MDB数据库效力高,最好尽量用MDB范例数据库。
假如用用DBF、DBC、Excel数据库,上面几点要注重:Excel数据库只能读取、增添纪录、修正纪录,但不克不及删除纪录;DBF、DBC<能够读取纪录、增添纪录、删除纪录、修正纪录,可是在增添纪录时,任何一个字段值都不克不及为空,由此可看出范围性很年夜,以是尽量地用MDB或SQL数据库。
4、实例(存取Excel数据表)
为了更进一步申明这些函数的用法,本文给出一个存取Excel数据表的例子,别的函数的存取办法与此相似。假定有一个如的名为1.xls的Excel文件,含有三个事情表一班、二班、三班。上面得用下面的函数存取事情表“一班”的数据。
编写ASP文件(文件名为1.asp)存取此Excel中文件。
1.asp源代码
ASP文件<%
创建Connection工具
FunctionCreateExcelRecordset(xlsfile,sheet)
Dimrs,conn,Driver,DBPath
Setconn=Server.CreateObject("ADODB.Connection")
Driver="Driver={MicrosoftExcelDriver(*.xls)};"
DBPath="DBQ="&Server.MapPath("xlsfile")
挪用Open办法毗连数据库
conn.OpenDriver&DBPath
setCreateExcelRecordset=Server.CreateObject("ADODB.Recordset")
翻开Sheet表,参数二>Connection工具
CreateExcelRecordset.Open"Select*From["&sheet&"$]",conn,2,2
EndFunction
%>
<HTML>
<BODYbgcolor="#FFFFFF">
<TABLEBORDER=1>
<TRBGCOLOR=#00FFFF>
<%
本行是关头行,对函数的援用
setrs=CreateExcelRecordset("1.xls","一班")
PartI输入“表头称号”且表头的背景的色彩为#00FFFF
Fori=0tors.Fields.Count-1
Response.Write"<TD>"&rs(i).Name&"</TD>"
Next
%>
</TR>
<%
Part>输入数据表的“内容”v
rs.MoveFirst将今朝的数据纪录移到第一项
WhileNotrs.EOF判别是不是过了最初一项
Row="<TR>"
Fori=0tors.Fields.Count-1
Row=Row&"<TD>"&rs(i)&"</TD>"
Next
Response.WriteRow&"</TR>"
rs.MoveNext移到下一项
Wend
%>
</TABLE></CENTER>
</BODY>
</HTML>
使用IE和PWS(PersonalWebServer)后扫瞄了局如:
参考文献:
[1]DataBaseandtheWorldWideWebMarianneWinslett,UniversityofIllinois
[2]http://www.aspobjects.com
优点:简单易学、开发速度快、有很多年“历史”,能找到非常多别人做好的程序来用、配合activeX功能强大,很多php做不到的asp+activeX能做到,例如银行安全控件 |
|