2024年6月20日发(作者:)
ISSN 1009—3044
E—mail:jsh@eeec.net.cn
ComputerKnowledgeandTechnology电脑知识与技术
http://www.dnzs.net.ca
Vo1.6,No.25,September 2010,PP.6914-6916
Te1:+86—55 1—569O963 5690964
基于ASP的数据导入功能的设计与实现
李国红
(郑州大学管理工程系,河南郑州450001)
摘要:简要阐述了数据导入处理的基本原理,并以相关数据库中学生表的结构为例,阐明源数据库表和目标数据库表的结构要求。
然后,利用ASP技术实现了对数据库的数据导入界面和数据导入处理的设计,对相关代码进行了必要的分析与说明
关键词:数据库;数据表;数据导入;ASP
中图分类号:TP311 文献标识码:A 文章编号:1009—3044(2010)25—6914—03
Design and Realization of Data Import Function Based on ASP
LI Guo——hong
(Depa ̄ment of Management Engineering,Zhengzhou University,Zhengzhou 450001,China)
Abstract:This paper briefly expounds the basic principle of data import,and taking the structure of student table in relative databases as an
example,it discusses the structure requirements to source and destination database tables.Then,it makes the designs for data import inter-
face and data import process!ng with ASP.At last,it supplies with the necessary analyses and explanaitons of relaitve web page codes.
Key words:database;data table;data import;ASP
有时,需要向特定的数据库表中导人不同或相同类型数据库中已有的记录,或者将某种数据库中的数据复制到另一种数据库
中,这种操作通常利用程序实现。这种利用程序向特定数据库表添加其它数据库中数据的操作称为数据导入,ASP技术使得这种操
作变得非常容易。本文提供的网页代码已通过上机测试,验证无误。
1基本原理
假设A与E是两个不同(或相同)类型的数据库,要将数据库A中的数据导人数据库E,其基本原理是:1)建立数据库对象
conna,并以conna打开与数据库A的连接,再建立记录集对象rsa,并以rsa打开与数据库A关联的记录集。2)如果rsa中无记录,则
提示“数据库A中无相关记录”;否则,就需要建立与数据库E关联的连接对象conne和记录集对象rse,并以可更新方式打开rse,
然后将记录集rsa中的记录逐条添加到rse中,而且,每添加一条记录,就更新一次rse(从而将添加的记录更新到数据库E的数据表
中),并使isa中的记录指针移向下一条记录,直到记录集rsa的全部记录添加至数据库E的数据表中,最后提示数据已导人E数据
库。
2数据结构
这里主要阐述如何将Excel、Access、Visual FoxPro(简称VFP)和SQL Server等数据库(源数据库)中的数据导入Excel或Access
数据库(目标数据库)中,要求源数据库表与目标数据库表的结构必
表1 stu表的结构(空白表示取默认值)
须相同或相似,不能冲突。
例如,可以分别在不同数据库中建立stu数据库表,stu数据库
表用于保存学生的相关数据,其所含字段及在不同数据库中的数据
类型如表1和图1所示。
在表1中,Access的“文本”、VFP的“字符型”、SQL Smwer的
“
char”所代表的数据类型被认为是相同或相似的。同样,“El期/时
间”、“日期型”、“datetime”也表示相同或相似的数据类型。因此,可
以认为.按表1在不同类型数据库中建立的stu数据库表具有相同
或相似的数据结构。
在图1中,工作表第1行各列中的“学号”、“姓名”、“性别”、“出生日期”、
“电话号码”相当于字段名,需要将A、B、C、E列设置为“文本”类型,将D列设
置为“日期”类型。这样设置后就认为与表1所述的stu表结构相似。
3数据导入界面的设计与实现
可通过数据导入界面实现数据的导入功能。数据导人界面应当具有提供
图1 Excel工作薄(数据库)中的StU表
收稿日期:2010—06—19
作者简介:李国红(1966一),男,山西壶关县人,副教授,博士,郑州大学硕士生导师,主要研究方向为信息系统与信息管理、电子商务
安全。
6914 数据库与信息f理 t 一 本栏目责任编辑:代影
第6卷第25期(2010年9月)
Compu ̄rKnowledgeandTechnology电脑知识与技术
源数据库文件名、源数据表名及目标数据库文件名、目标数据表名的接口。因
此,设计数据导入的界面如图2所示,相应的网页文件databaseAtoE.htm中的
代码如下:
<form action=”databaseAtoE.asp’’method=”POST”>
源数据库:<input type=”file”name=”databaseAA”><br)
源数据表:<input type=”text”name=”tableAA”>
<p>
目标数据库:<input type=”file”name=”databaseEE”><br>
目标数据表:<input tvpe=”text”name=”tableEE”>
<p>
图2数据库的数据导入界面
<input type=”submit”v ̄ue=”导人”>
<input type=”reset”value=”重置”>
</form>
4数据导入处理的实现
4.1数据导入处理的ASP程序代码 ’
在数据库的数据导入界面,单击“浏览”按钮选择源数据库和目标数据库的文件名,在源数据表和目标数据表对应的文夺输入
框中输入相应的数据表名(必须是对应的数据库中已建好的数据表的名称),再单击“导人”按钮即可将源数据表中的数据导人到目
标数据表中。由上述表单(对应于文件databaseAtoE.htm)的定义可知,一旦单击“导人”按钮,表单处理文件databaseAtoE.asp即被服
务器执行。依据前述数据导入处理的基本原理,实现数据导入处理功能的文件databaseAtoE.asp的代码如下:‘
<% .
dba=request(”databaseAA”)
dbtablea=request(”tableAA”)
dbe=request(”databaseEE”)
dbtablee=request(”tableEE”)
%>
<%
Select Case Lcase(Right(dba,3))
Case”mdb”
strConna=”driver-={Microsoft Access Driver .mdb)};dbq=”&dba
strSQLa=”select from”&dbtablea
Case”xls”
stTConna=”Driver-={Microsoft Excel Driver( .xls) &一
”readonly=O;DBO=”&dba
strSQLa=”select from[..&dbtablea&”¥】"
Case”dbc”
strConna=”Driver-={Microsofi visual FoxPro Driver};”&
”SourceType=DBC;SourceDb=”&dba
strSQLa=”select from”&dbtablea
Case”mdf’
strConna=”Driver={SQL Server};Database=dbSQ &_
”Server=PC一20091O131756;UID=sa;PWD=123456”
s ̄SQLa=”select from”&dbtablea
Case Else
response.write”源数据库文件只能是”&-
”Access、Excel、VFP或SQL Server数据库!”
response.write”<a href=javaseript:history.back0>返回</a>”
response.end
End Select
Select Case LCase(Right(dbe,3))
Case”mdb”
strConne=”driver-={Microsoft Access Driver .mdb)};dbq=”&dbe
strSQLe=”select from”&dbtablee
Case”xls”
strConne=”Driver=-{Microsoft Excel Driver( .xls)};”&一
”readonly=0;DBQ=”&dbe
strSQLe=”select from【.t&dbtablee&” ’
Case Else
response.write”目标数据库文件只能选择Access或Excel文件!”
response.write”<a href=javascirpt:bistory.back0>返回</a>”
本栏目责任编辑:代影 t 一 一数据库与信息管理 6915
Compu ̄rKnowledge and Technology电脑知识与技术
第6卷第25期(2010年9月)
response.end
End Select
%>
<%
set conna=server.createobject(”adodb.connection”1
eonna.open strConna
set rsa=server.createobject(”adodb.recordset”1
rsa.open strSQLa,conna
if rsa.bof and rsa.eof then
response.write dbtablea&”数据库表中无相关记录
else
set conne=server.createobject(”adodb.connection”1
conne.open strConne
set rse=server.createobject(”adodb.recordset”1
rse.open strSQLe,conne,0,3
do while not rsa.eof
rse.addnew
F(】r i=O To rsa.fields.COUrt[一1
rse(i)=rsa(i)
Next
loop
response.write dba&”中”&dbtablea&”表的数据已导人”&
dbe&”的”&dbtablee&”表!”
end if
%>
4.2相关说明
1)在上述文件databaseAtoE.asp对应的程序代码中,第一对<%和%>之间的代码用于接收来自表单的数据,第二对<%和%>之
间的代码用于定义不同类型的源数据库及目标数据库所对应的连接字符串和SQL命令串,第三对<%和%>之间的代码用于将源数
据库表中的数据导人至目标数据库表中。注意该代码的源数据库可以是Access、Excel、VFP、SQL Server数据库,目标数据库可以是
Access、Excel数据库,选择其他类型数据库文件时会有相关提示
2)dba、dbtablea、dbe、dbtablee分别用来接收数据导人界面巾选择(或输入)的源数据库文件、源数据库表名、目标数据库文件、目
标数据库表名。
3)Select Case LCase(R ht(d【1a,3))……End Select结构用于表示不同类型源数据库义件对应的连接字符串(即strConna)和SQL
命令串(即strSQLa),Select Case LCase(Right(dbe,3))……End Select结构用于表示不同类型目标数据库文件对应的连接字符串(即
stlConne)和SQL命令串(即strSQLc)。
4)LCase(Right(c¨)a,3))的功能是返回字符串变量dba的值中最右边的三个字符形成的子字符串,并转化为小写字符串。dba在此
程序中对直于表单中选择(或输入)的源数据库文件的路径,最右边三位是源数据库文件的扩展名,LCase0函数的作用是将大写字
母转化为小写。同样,LCase(Right(dbe,3)对应于目标数据库文件的扩展名(小写形式的扩展名)。扩展名“.mdb”、“.xls”、“.dbc”、“.mdf”
分别是Access、Excel、VFP、SQL Server数据库文件的扩展名。由于不同的数据库对应于不同的连接字符串和SQL命令字符串,因
此,分别用conna、rsa、strConna、strSQLa表示源数据库连接对象、源数据库记录集对象、源数据库的连接字符串、源数据表的查询命
令字符串,分别用conne、rse、strConne、strSQLe表示目标数据库连接对象、目标数据库记录集对象、目标数据库的连接字符串、目标
数据表的查询命令字符串。
5)if rsa.bof and rsa.eofthen……else“….end if是条件语句结构,用于判断和处理源数据库表中是否有记录,若无,则进行相
关提示 否则,就向目标数据库导人数据。
6)do while……loop循环用于向目标数据库添加数据,每执行一次循环体,可添加一条记录。内嵌的For……Next循环用于将
记录集rsa中的当前记录各字段的值赋给rse中新添加记录的相应字段,每次执行For循环,都会为rse巾当前记录的一个相应字段
赋值。rsa.fields.count用于返回源数据库表中字段的个数. .
7)不管目标数据库表中原先是否有数据,执行databaseAtoE.asp的程序代码后,都会将源数据库表中的记录追加到目标数据库
表中。需要注意的是,执行导人功能时应确保源数据表存在于源数据库中,目标数据表存在于目标数据库中,而且,向数据库表中追
加记录时,要确保目标数据库表中主键(如“学号”)的值的唯一性,或者可以在导人数据的程序代码中考虑主键值不能重复这一因
素。
参考文献:
f1】秦鸿霞.基于Web的信息输入模块的设汁与实现——以网上学生信息输入处理为例『J1.情报探索,2008(7):65—66.
『2】陈建伟.ASP动态网站开发教程[M].2版.北京:清华大学出版社,2005.
[3]秦鸿霞.基于Web的信息查询处理的设计与实现『J】.中国管理信息化,2009(16):8一l】.
6916 数据库与信息蕾理 本栏目责任编辑:代影
发布者:admin,转转请注明出处:http://www.yc00.com/web/1718839276a2752983.html
评论列表(0条)