- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用数据库存取文件的解决方法
用数据库存取文件的解决方法
用数据库保存文件有很广泛的用途,例如在数据库保存图片,或者保存有格式的资料,如Word文件、报表等。虽然在大多数开发工具中都提供了这种功能,但大多语焉不详。我们在开发过程也遇到这样的需求,经过仔细分析和试验,总结了在VB和Delphi中往数据库中存取文件的方法,提供给各位网友共享。
??? 在数据库方面,保存文件的字段类型是一个特殊类型,在Access中称为OLE对象,在Sql Server中称为image,在Oracle中则是长二进制。用VB开发可以用DAO和ADO两种连接数据库的方法(RDO没用过),这两种方法中的Field类型都有Getchunk和Appendchunk两个方法,Getchunk完成从数据库中读取二进制数据,Appendchunk则往数据库中加二进制数据(具体可以看帮助)。利用这两个函数就可以完成与数据库交流文件的功能。
以下是用DAO读写数据的两个函数。基本思路是,先把文件以32768个字节分为一块块,逐块读入,并保存到数据库,从数据库读出时也用同样的方法
Dim Chunk() As Byte??????????????????? 不定长二进制数组,用以保存临时数据Const CHUNK_SIZE = 32768????????????? 常量,每次读取数据的长度Function FieldToFile(filename As String, fdObject As Field) As Boolean? 从字段中读取数据,并保存到文件中filename是文件名,fdobject指二进制字段Dim lChunkCount As Long??????????????Dim lChunkRemainder As LongDim i As LongDim j As LongOn Error GoTo GGReDim Chunk(CHUNK_SIZE)lChunkCount = fdObject.FieldSize / CHUNK_SIZE 获得文件的块数lChunkRemainder = fdObject.FieldSize Mod CHUNK_SIZE 整块后余下的数据j = FreeFile(0)Kill filename????????? 如果这个文件存在,先删除Open filename For Binary As j? 以二进制方式打开文件For i = 0 To lChunkCount - 1?????????? Chunk() = fdObject.GetChunk(i * CHUNK_SIZE, CHUNK_SIZE) 取一块??????? Put j, , Chunk() 将块写入临时文件NextIf lChunkRemainder 0 Then???? ReDim Chunk(lChunkRemainder)???? Chunk() = fdObject.GetChunk(lChunkCount * CHUNK_SIZE, lChunkRemainder)? 取余下的数据???? Put j, , Chunk() 将其写入临时文件End IfClose j
FieldToFile = True???????Exit Function
GG:??????????? 错误处理Close jFieldToFile = FalseEnd Function
Function fileTofield(filename As String, fdObject As Field) As Boolean? 从文件中读取数据,保存到数据库Dim lChunkCount As LongDim lChunkRemainder As LongDim i As LongDim j As LongReDim Chunk(CHUNK_SIZE)lChunkCount = FileLen(filename) / CHUNK_SIZE 获得文件的块数lChunkRemainder = FileLen(filename) Mod CHUNK_SIZE 整块后余下的数据j = FreeFile(0)Open filename For Binary As jFor i = 0 To lChunkCount - 1????????Chunk() = InputB(CHUNK_SIZE, #j)? 取一块??????? fdObject.AppendChunk Chunk() 写入数据库NextIf lChunkRemainder 0 Then???? ReDim Chunk(lChunkRem
您可能关注的文档
- Bupivacaine spinal anesthesia for cesarean section in the appropriate dose in the observation(Bupivacaine脊髓麻醉剖腹产在适当剂量的观察).doc
- Business activities on the improvement of inventory accounting policy(业务活动的改进存货会计政策).doc
- Business Administration majors internship report Pham Van(工商管理专业实习报告(Pham范).doc
- Business administration problems and innovative Countermeasures(企业管理问题和创新的对策).doc
- Business Administration Internship report(企业管理实习报告).doc
- Business administration students summer internship report(工商管理学生暑期实习报告).doc
- Business data indicators electricity supplier operations- inventory(业务数据指标电力供应商操作u2014u2014库存).doc
- Business contracts to explore the characteristics of English language(商业合同来探索英语的特点).doc
- Business consumers interactive marketing planning and execution(业务消费者互动营销计划和执行).doc
- Business English compound applied on the training(复合应用于商务英语培训).doc
最近下载
- Python人工智能培训.pptx
- 建筑工程图集 18K802:暖通空调系统的检测与监控(水系统分册).pdf VIP
- 2023-2024学年译林版(三起)英语六年级上册期中测试题含答案.docx
- GF-2017-0201《建设工程施工合同示范文本》.doc
- 2024年保安员考试复习题库及答案(共1500题).doc
- 五四运动说课课件(新部编).ppt
- DLT5100—2014 水工混凝土外加剂技术规程.pdf
- 2022年上海市普陀区初三中考一模英语听力试题及原文(附听力音频).docx VIP
- (高清版)BT 26745-2021 土木工程结构用玄武岩纤维复合材料.pdf VIP
- 大学生就业引航树立正确的就业观.pptx VIP
文档评论(0)