




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,6数据库驱动程序现今的网络电子商务都要与数据库产生联系的关系,这里所指的数据库是WebServer上的数据库,其实数据库就是一个文件,但是,它是一个结构化储存数据的格式文件。其实我们常常在使用数据库而不清楚的自知,例如,我们有时候操作过的.mdb文件,这就是一个Access格式的数据库文件。要存取网络服务器上的数据库可是跟我们单机上的操作有很大不同,在ASP网页中要存取网络服务器上的数据库,必须使用存取数据库对象ADO(ActiveXDataObjects),ADO是存取数据库对象的统称,我们主要用来存取数据库的对象有下列三种:Connection对象Recordset对象Command对象在ASP中使用ADO对象就可以存取数据库了吗?当然不行,除了ADO对象外我们还要有ODBC驱动程序,因为我们存取任何一种数据库都必须有其相对应的ODBC驱动程序,ADO对象才能够对数据库的文件作存取的动作。,.,61数据库驱动程序我们存取任何一种数据库都必须有其相对应的数据库驱动程序,ADO对象才能够对数据库的文件作存取的动作。ODBC(OpenDataBaseConnectivity)OLEDB(ObjectLinkingandEmbeddingDataBase)以上这两者皆为驱动程序类别,应用程序可通过此驱动程序接口来存取数据库的数据,也就职是说,要使ADO对象可以存取数据库,就必须安装相对应的驱动程序,不同数据库驱动程序,存取相对应的数据库类型,ODBC与OLEDB只是驱动程序们的统称而已,每一.种不同类型的数据库都拥有自己相对应的驱动程序,如下表所示:如果你已安装了IIS/PWS4.0版,则至少会有下列三种数据库驱动程序:那我要使用Access2000数据库时怎么办?其实,你只要安装较新的软件后就会附有相关的最新数据库驱动程序,要不然你也可以直接连上微软的网站下载安装最新的数据库程序,如果你是使用IIS5.0版那你就大可放心了,因为IIS5.0版已经提供了新版的数据库驱动程序了。,.,查看已安装的驱动程序在我们的机器上到底安装了哪能些ODBC数据库驱动程序呢?要查看我们机器上安装了哪些数据库驱动程序,首先,我们必须先打开“控制面板”,然后再打开“ODBC数据来源”项目:在打开“ODBC数据源”项目后,接着就会出现“ODBC数据源管理员”对话视窗,我们直接切换至“驱动程序”选项页,就可以看到已安装在我们机器上的数据库驱动程序,在你的机器中已安装的数据库驱动程序的数目多少要看你安装了多少软件而定,因为很多的软件在我们执行安装时常常会自动的帮我们安装了某些ODBC数据库驱动程序:,.,62ADO对象群的Connection对象Connection对象是负责与数据库实际的链接动作,建立与网络服务器数据库的链接是进行数据库存取的第一步,若没有Connection对象链接数据库,则空有其他对象也没用,那我们要如何来建立一个Connection对象呢?其标准格式如下所示:Set对象名=Server.CreateObject(“ADODB.Connection”)上式中的“对象名”是我们自定义的,并没有强制性的命名规定,不过,最好是取一个有意义的名字,以方便我们使用与记忆。建立了Connection对象后我们紧接着就要利用这个Connection对象的“Open”来链接数据库,,.,下例为一个链接Access2000格式的test.Mdb数据库文件范例:1.Setcn=server.Createobject(“ADODB.Connection”)建立一个对象名为cn的Connection对象;2.使用变量Provide来指定我们要使用的数据库驱动程序,provider=“provider=Microsoft.jet.oledb.4.0;”因为我们要进行链接存取的数据库文件类型为Access格式,所以使用的数据库驱动程序为:microsoft.jet.oledb.4.03.使用变量Path来指定我们要使用的数据库路径与文件名,path=“datasource=”datasource=”分号为参数,.,不同的数据库驱动程序,不同的参数链接不同类型的数据库要使用不同的对应驱动程序,没忘记吧,不同的驱动程序当然它们的参数组合也就不同了,每一种不同驱动程序都有特定的参数格式:链接Dbf数据库链接Dbc数据库链接Excel数据库链接Text数据库链接SQL数据库,.,数据库驱动程序名称哪里来?链接不同类型的数据库要使用不同的对应驱动程序,这是一再强调的,那么我们如何得知数据库驱动程序的名称呢?先打开“控制面板”,然后再打开“ODBC数据源”项目,打开“ODBC数据源”项目后,接着就会出现“ODBC数据源管理员”对话视窗,我们直接切换至“驱动程序”先项页,注意看到“名称”栏位,这些条例的项目就是打开相关数据库的驱动程序名称。注意取用这些驱动程序名称,必须一字不漏地抄写下来,包括英数字与符号,设置空白字符也不可放过。,.,63ADO对象群的Recordset对象建立Recordset对象Recordset对象是负责浏览与操作从数据库取出来的数据,其标准格式如下所示:上式中的“rs”(对象名)同样是我们自定义的,没有强制性的命名规定,不过,最好是取一个有意义的名字,以方便我们使用与记忆。接着使用open方法来打开数据表或执行select指令。,.,参数设置如下:参数一(Source):此参数可为一个Command对象名称、一段指令、一个指定的数据表格名称或是一个StoredProcedure,若指定为数据表名称,则打开整个数据表,若使用Select指令则建立的Recordset对象内所存放的数据为选取数据记录的结果。参数二(ActionConnection):recordset可通过此属性链接connection对象,此参数可为connection对象名称或是一串包含“数据库链接信息(ConnectionString)”的字符串参数。,.,参数三(CursorType):以何种游标打开数据,包含ad0penForward0nly、ad0penKeyset、ad0penDynamic、ad0penStatic四种方式。参数四(LockType):采用何种Lock类型,包含adLockRead0nly、adLockpessimistic、adLock0ptimisticadLockBatch0ptimistic四种类型。参数五(0ptions):对数据库请求的类型,包含adCmdUnknow、adCmdText、adCmdTable、adCmdStoredproc;四种参数。,.,读取Recordset对象数据要读取Recordset对象内的数据,就必须先了解数据表的结构!Field对象:数据库中最小数据单位为“栏位”,在ADO对象群中相对应的就是Field对象,Field对象拥有三个属性,分别为“Name”(栏位标题)、“Value”(栏位数据内容)、“Type“(栏位数据类型,例如:数字、文字、日期等等)等三种:Fields集合对象:Fields对象集合就是Fields集合对象,对比于数据库的组织结构来看,栏位的集合就构成“数据记录”:了解了Recordset对象内的基本结构,我们可以清楚的知道Fields集合对象基本上就是一个“数组”,因此我们就可以利用数组的特性,也就是可以利用“Count”属性配合“For”循环语句来列举出Fields对象。,.,另外,我们还可以搭配下方属性MoveFirst及BOF将所有数据读取。改变目前数据表的方法MoveNext:移至下一笔数据使其成为现用数据记录MovePrevious:移至前一笔数据使其成为现用数据记录MoveFirst:移至第一笔数据使其成为现用数据记录MoveLast:移至最后一笔数据使其成为现用数据记录BOF:数据记录指标是否移至第一笔数据记录之前EOF:数据记录指标是否移至最后一笔数据记录之后AbsolutePosition:设定或返回现用数据记录的绝对位置数据表的新增、删除与修改Addnew:新增数据记录Update:更新数据记录CancelUpdate:取消更新数据Delete:删除数据记录,.,下例即是添加数据记录的使用方法,请注意:“rs“是一个我们自行建立的Recordset对象:注意当我们使用“Addnew”方法加入新数据后,最后一定还要加上调用“Update”方法来将数据记录更新,如此一来添加的数据才会被存进数据库文件中。,.,64ADO对象群的Command对象Command对象Command对象负责对数据库提供请求,也就是传递指定的SQL指令,即执行ActionQuery指令,建立方式如下:何为ActionQuery指令?ActionQuery指令是指能够写和数据的指令,可分为以下几种:Delete指令:删除数据记录,语法如下:例如,我们要将“员工”数据表中“年龄”已经超过“60”岁的人员数据删除。注意:如果指令中的“Where条件式“忽略掉而没使用,则所有的数据可是都会被删除的,也就是说,数据表的内容将会是空的。,.,Update指令:更新数据记录,语法如下:通常我们都会利用Update指令来进行数学运算,例如,公司要进行年度薪资调整,因此我们要将“员工薪资”数据表中“薪资”栏位提高五个百分比:InsertInto指令:新增数据记录,语法如下;例如:公司加入了新的成员,我们要在“员工”数据表中加入这位新员工的数据。注意:栏位名称与栏位值必须相对应!此格乃是将Select指令所选取的数据记录新增至另一个数据表中。注意:此格式中的两个数据表必须是预先就已经建立完成的。SelectInto指令:建立新数据记录,语法如下:此格式乃是将所选取的数据记录新增至另一个“新的”数据表中。例如,我们要将“员工薪资”数据表中“薪资”栏位值高于3万元的员工人员数据建立成另外一个新的“高薪人员”数据表,.,如何执行ActionQuery指令在要执行ActionQuery指令非常简单,我们只要将ActionQuery指令指定给“Command”对象的“CommandText”属性,然后再调用“Command”对象的“Execute”方法执行ActionQuery指令,如下图所示:注意“cmd”是一个我们已经建立好的“Command”对象,而“SQL”则是我们要执行的ActionQuery指令。注意ActionQuery指令的使用时机:针对大量数据的删除、添加与更新,其效率较高。,.,6-5计算机网络在线选票设计我国的民主进步是世界有目共睹的,选举的基本原则是少数服从多数,多数尊重少数,现在的校园当然也要民主开放,我们的班级干部如班长、副班长等等,都是由班级同学们选取出来的,不过选举人少还无所谓,相对的,如果选举人多那花费的时间与相关费用也跟着增加,现在计算机网络科技发达,我们就采用计算机网络来设计一个在线选票网页。6-5-1计算机网络在线选票在线选票,既省时间又操作方便,最重要的是能马上开票,投票后选票结果就能马上呈现在眼前。所以现在就来为同学示范一个在线选票的ASP程序机制,本设计范例是以选票选举优秀生为例,示范如何制作在线选票程序,程序中除了基本的选票机制外,还有得票数的长条图表示。,.,651选票机制的组成在线选票机制的组成在本范例中共分为三个部分!vote.asp:用来显示目前的选票结果以及进行投票动作的程序机制。votesave.asp:进行储存新投票结果的程序机制。vote.mdb:记录投票结果的数据库。在线投票程序网页vote.asp:当投票者第一次链接此程序网页时将出现如下的画面:当我们选择好理想人选,按下“投下神圣的一票”按钮后,投票的表单就会将投票数据送交votesave.asp程序进行处理,然后又自动转向链接回到投票网页程序vote.asp的程序网页画面,但此时你可以发现画面中:我们投票的人选票数增加了,但是原本显示“你的选票模范生”的字句变成了“你已经投选票了,只能观看投票结果!”,同时那个“投下神圣一票”的按钮也不见了,没错,这就是我们防止重复投票的过滤机制,如下图所示:,.,储存投票结果程序votesave.asp:本程序是负责将投票程序网页vote.asp中表单所传送过来的投票数据更新储存到数据库中,但是并没有显示任何网页内容,而在新的投票数据更新到数据库后就直接转向链接回投票程序网页vote.asp去显示最新的投票结果。投票结果数据库vote.mdb:在数据库我们制作了一个名称为“student”的数据表,用来储存相关的票数数据,其数据表的结构如下:652投票程序网页首先,我们先来看一下如何建立选票数据库的链接与数据表的打开,如下图:关于建立数据库链接对象、链接数据库与建立数据库存取的数据记录对象,这三个部分想必各位网友们看过前面的章节后应该是非常熟悉才对,我们现在将针对打开数据表进行数据记录存取的部分做个说明。,.,Recordset对象的open方法参数1:欲打开的数据表名称或Select指令,若指定Select,则我们建立的数据记录对象将是Select指令筛选数据记录后的结果,如果指定为数据表名称,则打开整个数据表,在本例中我们采用Select指令的方法。参数2:指定一个已经链接打开的数据库对象,本例中我们已建立链接打开的为Conobject对象。参数3:指定数据对象Recordset的打开类型,此参数有下列四种类型。注意在多人存取数据库的情形下,将设置设为1,则他人若添加数据记录的时候,我们将无法立即看到他人添加的数据记录,若设置值为2,他人若添加数据记录的时候,我们将可以看到他人添加的数据记录。在本投票程序网页中,因为我们只需要读取数据库的内容来做显示的处理,因此我们就将此参数设置为0。,.,参数4:指定锁定类型,此参数有下列四种类型设置值1:Recordset对象的AddNew、Delete与Update方法都不可以使用。设置值2:若有两位连接者同时执行程序而进行同一笔数据记录更新操作的时候将产生错误,因此只要有一个连接者的程序进行数据栏位更动时就将数据记录锁定,直到此程序调用Update方法时才将数据记录解除锁定。设置值3:乐观锁定,是认为不可能有两位连接者同时执行程序而进行同一笔数据记录更新操作,因此只在Update方法被调用时才将数据记录锁定,数据记录一写入数据库后立即解除锁定。设置值4:在数据记录栏位进行变动时,并不会将更动的数据写入数据库,在UpdateBatch方法被调用时才将全部有更动的数据写入数据库,而且在更动的数据写入数据库时才会锁定数据记录。,.,注意在本投票程序网页中,我们只需要读取数据库内容并不会做任何的数据改变更动作,因此选择设置值为1,但是在储存投票结果程序votesave.asp中就不能选此设置值,后续小志将再做说明。如何设置票数长条图?如何显示票数的长条图,当然不是用程序画出来的,在HTML网页标签中有一个影像标签,其格式如下:在我们的长条图就是利用HTML影像标签的图片宽度属性Width与图片高度属性Height变化出来的,首先,笔者准备了一个宽度5个像素,高度15个像素的图片“1”,图片高度属性Height设置值维持15个像素不变,但是图片宽度属性Width设置值则随着得票数的比例来变化,我们先来看图片宽度属性Width设置值的产生方式:,.,第一个步骤就是先计算投票数(上图阴影部分程序语句),很简单,将个别候选取人的得票数加起来就是总投票数了。接着,开始计算各个候选取人的得票图片宽度属性Width设置值(上图了阴影部分程序语句),我们要先利用IF语句判断候选取人的票数是不是0,因为除法中分子不能是零嘛!提示你一定觉得很奇怪,按比例显示应该是候选人的得票数除以总投票数乘100啊,怎么会是乘500?因为怕图形显示的太短不好看呀,想想,如果单纯按照百分比来显示图形,那即使是得票率百分之百,那图形的显示宽度不就只有100个像素?所以笔者就将图形的显示宽度乘以5倍了,也就是说得票率百分之百,图形的显示宽度就有500个像素,这并不是硬性规定,你可依你的版面配置来设置喔。,.,如何显示票数长条图在计算好各个候选人的得票图片宽度属性Width设置后,该如何将图形显示出来,说见下图。小志准备的基础图形5*15像素图片“1”文件名为vote.Gif,所以HTML影像标签的图片文件名为设置值为vote.Gif,图片高度属性Height设置维持15个像素不变,所以省略不设置,图片宽度属性Width设置值则随着我们程序计算好的各个候选人的得票图片宽度来变动。目前候选人得票数要在票数图形后加上目前候选人的得票数,只要在HTML影像标签后方加上“票”就行了,“票”字要加上去,如下图,要不然网页中显示出来的只是数字,根本不知道是什么意义。,.,圈票处选择钮设置圈票处的选择钮在设置时要特别小心,所有的选择钮组件名称都必须是相同的(Name属性,本例名称为vote),只有组件在表单数据送出时的值不同而已(Value属性):提示选择钮只有单选的功能,也就是说表单中全部的选择钮栏位只有一个能生效,不能复选,虽然名称都相同,但是表单传送出去的选择钮“值”却是不同的,因此就可依不同的值来决定得票都是哪位候选人。防止重复投票的过滤机制我们之前说过,在投票的程序网页中按下“投下神圣的一票”按钮后,投票的表单就会将投票数据送交votesave.Asp程序进行处理,当自动转向链接回到投票程序网页画面时,“你的一选票模范生”的字句变成“你已经投过票了!只能观看投票结果!”,同时“投下神圣一票”的按钮也不再出现,这就是防止重复投票的过滤机制,在本例中我们利用session对象来建立过滤机制。,.,Session对象是ASP文件共用的对象,每一位连接者都有个别拥有属于自己的session对象,将数据写入session对象的方法如下:当我们将数据写入到session对象中,只是将数据写入到目前连接者的session对象中,与其他的连接者并无关系,因此我们就可依照连接者目前session对象的数据值来判断连接者是否具有进行投票的权利。先进行变量名称为checkvote的session对象数据值,如果其数据值为“yes”代表投过票了,则将显示于程序网页中的信息文字字符串设置为“你已经投过票了!只能观看投票结果!”,并且将决定赤示“投下神圣的一票”按钮与否的确认变量“checkvote”设置为“no”代表不显示投票按钮。如果session对象其数据值为“no”则代表尚未投票,将显示于程序网页中的信息文字字符串设置为“你的一票选模范生”,并且将显示投票按钮的确认变量“checkvote”设置为“yes”代表显示投票按钮。,.,7-13投票结果储存程序同样的,我们先来看一下如何建立选票数据库的链接与数据表的打开,如下图:发现跟我们投票程序网页中,建立选票数据库的链接与数据表的打开的程序语句有何不同之处吗?没错,就是数据记录对象Open方法的第三与第四个参数设置不一样!在第三个指定数据对象Recordset打开类型的参数,我们改变指定类型值为1(可读写模式且数据记录可自由移动),第四个指定锁定类型的参数,我们改变指定类型值为3,乐观锁定,因为笔者个人认为不可能有两位连接者同时执行程序而进行同一笔数据记录更新操作,因此只在Update方法被调用时才将数据记录锁定,数据记录一写入数据库后立即解除锁定。,.,如果我们将第四个指定锁定类型的参数,依然指定类型值为1,则程序将会出现下图的错误:为什么会出现错误呢,因为若指定锁定类型的参数类型值为1,则我们将无法使用Recordset对象的AddNew、Delete与Update方法,但是我们要更新投票票数就得用到Recordset对象的Upd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绘画等级考试基本考试题
- 电火花加工原理及应用考试题
- 金融行业人工智能算法审计2025年应用在金融投资决策中的应用与挑战报告
- 内蒙政法考试题库及答案
- 农业职称考试题库及答案
- 安全员考试及答案b
- 全国企业安全员考试及答案
- 2025年北京市设备购买协议
- 陕西职高本科题库及答案
- 家具厂榫卯加工安全考试题
- 2025年公共营养师考试题及答案
- 2024年09月山东枣庄市妇幼保健院青年就业见习拟录用笔试历年专业考点(难、易错点)附带答案详解
- 2025年长沙卫生职业学院单招职业技能测试题库及答案1套
- 淋巴瘤PET-CT及PET-MR显像临床应用指南(2025版)解读课件
- 动物营养学-第七章-矿物质与动物营养详版课资
- 高中生纪律教育主题班会
- 初中班会课件《突围-目标成就未来》
- DBJ50-T-157-2022房屋建筑和市政基础设施工程施工现场从业人员配备标准
- 工程实体质量常见问题治理自评总结报告表格
- 《坚持的主题班会》课件
- 安全网络系统漏洞挖掘与修复考核试卷
评论
0/150
提交评论