【VB开源代码栏目提醒】:网学会员为需要VB开源代码的朋友们搜集整理了基于VB程序在Access表中存储与读取试题文件 kdh - 编程语言相关资料,希望对各位网友有所帮助!
电子设计工程ElectronicDsignEnginring第18卷Vol.8第7期No.201年7月Jul.21收稿日期21-0-09稿件编号0000基金项目陕西高等教育教学改革研究一般项目资助9BY37。
作者简介杨战海97—男陕西泾阳人硕士研究生讲师研究方向计算机算法和网络技术Aess3是微软公司推出的一种关系型数据库
管理系统它提供一整套完整的工具和向导即使是初学者也可以通过可视化操作完成大部分数据管理和开发
工作因此目前Aess3应用广泛。
面向对象的编程语言VisualBasi6简称
VB6.也是微软公司推出的产品因此
VB6.与Accss3之间有良好的接口通过
VB编程可方便访问和管理Accss数据库实际应用中很多情况需要把文件存入到Accss表中并且根据需要来访问表中已存储的文件1
VB访问数据库方式在
VB的开发环境中可以使用3种数据库访问方式分别是数据访问对象DAODataAccssObjt、远程数据对象RDORmoteDataOjts和AtiveX数据对象ADOAtivXDataOjt1.1数据访问对象DAO3在
VB中提供种与Jt数据库引擎接口的方法Data控件和数据访问对象Data控件只给出有限的不需编程而能访问现存数据库的功能而数据访问对象DAO模型则是全面控制数据库的完整编程接口Data控件将常用的DAO功能封装在其中它与DAO控件的关系就像内存与高速缓存之间的关系一样所以这两种方法并不互斥实际上它们常同时使用DAO最适用于单系统应用程序或在小范围、本地分布使用其内部已经对Jt数据库的访问进行加速优化而且其使用也很方便.2远程数据对象RDO远程数据对象RDO是一个到ODBC的、面向对象的数据访问接口它与易于使用的DAOstyl组合在一起提供一个接口形式上展示出所有ODBC的底层功能和灵活性4尽管RDO在访问Jt或ISAM数据库方面受到限制而且它只能通过现存的ODBC驱动程序访问关系数据库然而RDO已被证明是许多SQLSrvr、Oracl以及其他大型关系数据基于V程序在Access表中存储与读取试题文件杨战海延安大学计算中心陕西延安000摘要一般试题库的试题信息由简单的文字信息组成不涉及文件的存取问题而较为复杂试题库的试题信息则由Offic文件、网页文件、源程序文件、图片文件等组成而且涉及文件的存取
问题在数据库表中如何快速有效安全地存取试题文件显得十分重要通过
VB编程方法把50个rtf文件以二进制方式读写文件到Accss数据库表中为了提高试题文件的安全性在存储文件到Accss数据库表时对文件的二进制数据进行异或运算而在读取文件时对读取到的二进制数据进行同样的异或运算程序调试表明基于
VB程序可以在Accss表中存储与读取各种类型的文件关键词:VBAccss试题库试题文件二进制数据中图分类号TP3文献标识码A文章编号3000-00-03SavingandreadingexamquestiondocumentsbasedonVprocedureinccesstableANGZhan-haiComputerCenterYananUnversityYanan000hinabstract:ThtstqustioninformationofthgnralxamqustiondatabasiscomposdofthsimplwritinginformationisnotinvolvdthaccssingprolmofdocumntsButthmorcomplxtstqustioninformationofthxamqustiondataasiscomposdthofficdocumntsthhompagdocumntsthsourcprogramdocumntsandthpicturdocumntsAnditisalsoinvolvdthaccssin
gprolmofdocumntsHowtosaflyandffctivlyaccssthtstqustioninformationinthdatabastablapparsvryimportantThroughVBprogrammingmthod0rtfdocumntsarradandsavdbybinarywayinAccssdatabastablInordrtonsurthscurityofthxamqustiondocumntsthbinarydatamustbdaltwithXORwhnstoringandradingthdocumntsThprogramdbuggingindicatsthatbasdonthVBprocdurallsortsofdocumntscanbsavdandradinAccsstablKey
words:VBaccsststqustiondatabasxamqustiondocumntsbinarydata库开发者经常选用的最佳接口。
RDO提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性以及方法。
和DA一样在
VB中也把其封装为RD控件其使用方法与DA控件的使用方法类同。
1.3ActiveX数据对象ADO5ActiveX数据对象D是DA/RD的后继产物AD2.0在功能上与R更相似一般来说在这两种模型之间有一种相似的映射关系。
D扩展DA和RD所使用的对象模型这意味着它包含较少的对象、更多的属性、方法、事件。
作为先进的数据库访问模式AD简单易用。
微软已经明确表示今后把重点放在AD上对DA、RD不再作升级因而AD已经成为了当前数据库开发的主流选择。
下面简单介绍部分AD控件的
常用对象:1OCommand对象用于执行面向数据库的一次简单查询。
此查询可执行诸如创建、添加、取回、删除或更新记录等动作。
如果该查询用于取回数据此数据将以一个RecordSet对象返回。
这意味着被取回的数据能够被RecordSet对象的属性、集合、方法或事件进行操作。
Command对象的主要特性是有能力使用存储
查询和带有参数的存储过程。
2OConnection对象用于创建一个到达某个数据源的开放连接。
通过此连接可以访问和操作一个数据库。
如果需要多次访问某个数据库应当使用Connection对象建立一个连接。
也可以经由一个Command或Recordset对象传递一个连接字符串创建某个连接。
不过此类连接仅仅适合一次具体的简单查询。
3ORecordset对象用于容纳来自数据库表的记录集。
一个Recordset对象由记录和列字段组成。
在O中此对象是最重要且最常用于对数据库的数据进行操作的对象。
Recordset对象能够支持2种更新类型立即更新和批更新。
前者一旦调用Update方法所有更改被立即写入数据库而后者provider将缓存多个更改然后使用UpdateBatch方法把这些更改传送到数据库。
4Record对象用于容纳记录集中的一行、或文件
系统的一个文件或一个目录。
在一个结构化的数据库中每个表在每一行均有相同的列数并且每一列都由相同的数据类型组成。
Record对象允许访问行与行之间的列数且/或数据类型不同的数据集。
DField对象包含有关Recordset对象中某一列的信息。
Recordset中的每一列对应一个Field对象。
6DParameter对象可提供有关被用于存储过程或查询中的一个单参数的信息。
7DProperty对象表示对象的动态特性这种动态特性是被provider定义的。
8DStream对象用于读写以及处理二进制数据或文本流。
9AOError对象包含与单个操作涉及提供者有关的数据访问错误的详细信息。
A会因每次错误产生一个Error对象。
每个Error对象包含具体错误的详细信息且Error对象被存储在Errors集合中。
要访问这些错误就必须引用某个具体连接。
2存储与读取文件2.1存储文件到Access表中采用V用二进制方式读写文件到ccess数据库表中。
要实现V与ccess表的连接首先应该选择“工程”菜单中的“引用”再在“引用”对话框中选择“MocrosoftctiveXatabjectLibrary”。
使用ccess3设计数据库temp.mdb建立表vbrtf表有rtf和id两个属性。
属性rtf的数据类型设为LE对象用于存储文件的二进制数据而属性id数据类型设为文本文本宽度为用于标记元组。
并编写程序
代码imcns.Connectionimrss.RecordsetPrivateSubwritertfyValstrilesStringyValthsStringimtmpsyteimstrsStringSetcnNewConnection连接数据库文件cn.ConnectionString“ProviderMicrosoft.Jet.LE.4.ataSource”“tempmdb“PersistSecurityInfoalsecnCommandTimeout5cnpenSetrsNewRecordsetrsCursorLocationadUseClient连接具体的表rspen“selectfromvbrtfcn1adpenKeysetadLockPessimistic二进制方式访问文件lngilereeilepenstrileorinaryslngileReimtmpLlngileGetlngiletmpCloselngile把数据写入表中rs1ddNewrs1ields“idValuethrs1Fields“rtfValuetmprs1UpdateEndSub把0个rtf文件写入表中PrivateSubForm_Clickori1Tothormati“Callwritertf“rtfth“rtfthNextEndEndSub杨战海基于V程序在Access表中存储与读取试题文件9《电子设计工程》2010年第7期国内刊号CN61-1477/TN国际刊号ISSN16746236在线投稿系统:http://mag.ieechina.comadieechina.com广告地址西安市劳动南路210号5-1-3信箱邮政编码710082欢迎投稿欢迎订阅欢迎刊登广告
程序运行后单击窗体触发窗体的Click事件通过循环调用子过程writertf从而把50个rtf文件存入到表vbrtf中去并形成50条元组。
22从Access表中读取数据生成文件从生成的vbrtf表中读取数据已知其中存有50条元组读取数据后可生成50个文件完成该任务的程序
代码如下DimcnAsADODB.ConnectionDimrsAsADODB.RecordsetPrivateSubreadrtfByValstrFileAsStringByValthAsStringDimtmpAsByteDimstrAsStringSetcn1NewADODB.Connection连接数据库文件cn.ConnectionStringProviderMicrosoft.Jet.OLEDB.4.DataSource”“temp.mdb”“PersistSecurityInfoFalse”cn.CommandTimeout5cn.OpenSetrsNewADODB.Recordsetrs.CursorLocationadUseClient连接具体的表str“selectfromvbrtfwhereid”th“”rs1.Openstrcn1adOpenKeysetadLockPessi
misticReDimtmprs1.Fields.ActualSize返回二进制文件的字节长度tmprs1.Fields“rtf”.ValueOpenstrFileForBinaryAsPuttmpCloseEndSub读取并生成5个rtf文件PrivateSubForm_ClickForiTo5thFormati“”Callreadrtf“rtf”th“.rtf”thNextEndEndSub程序运行后单击窗体触发窗体的Click事件通过循环调用子过程readrtf从而可把表vbrtf中的5条元组的rtf字段分别读出进而生成5个rtf文件。
3加密表中的文件数据利用上述存储程序将文件以二进制的形式存储到数据库表中利用读取程序将Access表中的二进制数据转化为文件。
若文件以二进制形式存储到数据库表时文件内容是很容易得到的文件的安全性得不到应有的保证6。
异或加密法虽然简单但在这里只是对文件的二进制数据中某几个元素进行异或这样破解起来根本就不可能了。
为简单起见但把文件的数据存入数组tmp后对前3个元素进行异或运算异或密码分别为86、24、97这样只改变3个元素的值其他元素并未改变然后把数组所有元素写入表中。
异或语句如下tmptmpXor86tmp1tmp1Xor24tmp2tmp2Xor97。
读取表中的元组后把二进制数据写到数组tmp中再把前3个元素异或运算就可以恢复文件的初始二进制值。
若不知道异或密码或者异或运算哪些元素则无法恢复到文件初始的二进制值。
这种加密手段采用一次一密加密算法该加密算法是无条件安全的7。
4结论基于
VB编程的方法可以在Access表中存储与读取各种类型文件。
而试题的源程序
代码及其相关
代码往往存储在文件夹中因此对文件夹进行
压缩生成自解压文件这样就能够在Access表中存储与读取自解压文件从而能够间接解决文件夹在数据库表中的存储与读取问题。
参考文献1郑小玲.Access23中文版实用教程M.北京:清华大学出版社24.2刘炳文.VisualBasic程序
设计M.2版.北京:清华大学出版社23.3吴绍根陈建潮.VisualBasic程序设计基础M.北京:人民邮电出版社26.4DianeZak.VisualBasic6.程序设计M.北京:电子工业出版社27.5BradleyJCMillspaughAC.
VB.
NET大学教程国际版M.北京:清华大学出版社24.6ZhouDMaJTurbanEetal.AfuzzysetapproachtotheevaluationofjournalgradesJ.FuzzySetsandSystems22131:63-74.7卢开澄.
计算机密码学计算机
网络中的数据保密与安全M.北京:清华大学出版社23.9