采用流技术实现sql server数据库特殊数据存取技术

上传人:子 文档编号:41951987 上传时间:2018-05-31 格式:DOC 页数:5 大小:35KB
返回 下载 相关 举报
采用流技术实现sql server数据库特殊数据存取技术_第1页
第1页 / 共5页
采用流技术实现sql server数据库特殊数据存取技术_第2页
第2页 / 共5页
采用流技术实现sql server数据库特殊数据存取技术_第3页
第3页 / 共5页
采用流技术实现sql server数据库特殊数据存取技术_第4页
第4页 / 共5页
采用流技术实现sql server数据库特殊数据存取技术_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《采用流技术实现sql server数据库特殊数据存取技术》由会员分享,可在线阅读,更多相关《采用流技术实现sql server数据库特殊数据存取技术(5页珍藏版)》请在金锄头文库上搜索。

1、 采用流技术实现采用流技术实现 SqlSql ServerServer 数据库特殊数据存取技术数据库特殊数据存取技术摘 要: 试题信息录入是高校题库管理系统的一个重要环节,而有一些科目的试题不是普通的文字,其中包含大量的特殊符号和公式,通过把特殊试题转换为图片格式,通过二进制形式数据的存取操作解决上述问题。关键词: 试题信息;二进制数据;ado 对象;stream 技术0 引言在高校题库管理系统中,试题信息的录入是必须解决的问题,而有一些试题内容,比如大学物理、高等数学等科目中包括大量特殊符号或公式,这些试题内容不能正常的存储到数据库中;同样的道理,这些试题内容也不能通过正常的 sql 语句输

2、出显示到页面中。为了解决这个问题,首先把数据库试题信息存储成图片的数据格式,然后以二进制数据的形式存储到数据库中。后边又涉及到数据库中二进制数据的存取问题,在 sql server 数据库中,普通的数据类型直接在用户定义的字段上存取,而二进制数据显然不能。笔者通过查阅资料实现了对 sql server 数据库中二进制数据的存取操作,当然此类存取操作必须通过应用程序的操作才能实现。2在具体程序中,利用 vb6.0 环境下的 ado field 对象和ado stream 对象实现的。1 实现原理ado,即 activex data object,是应用程序对数据库进行访问的应用程序层接口,称为“

3、对象模型” 。ado 对象模型提供的对象包括 ado field、ado recordset、ado stream。ado recordset 对象用于容纳来自数据库表的记录集。ado field 对象包含有关recordset 对象中某一列的信息。recordset 的每一列对应一个field 对象。ado field 对象提供 getchunk 方法和 appendchunk方法来存取 blob(二进制大对象,在计算机中,blob 常常是数据库中用来存储二进制文件的字段类型)数据的。getchunk 方法用于检索二进制数据,返回数据将赋给“变量” ;appendchunk 方法将二进制数据

4、写入字段。field 对象的第一个 appendchunk 调用将数据写入字段,覆盖所有现有的数据,随后的 appendchunk 调用则添加到现有数据。ado stream 对象用于读写以及处理二进制数据或文本流。在 vb 中,stream(流)技术是一种读写数据的方法,它提供了各种存储介质(磁盘、内存、字符串等)的通用读写接口。利用它可以非常方便地实现图像的文件形式与数据库的 blob字段之间转换。在向 blob 字段中存入图片时,需先利用 stream对象把以文件名形式存储的图像数据载入 stream 对象,然后把stream 对象的值赋值给数据库的 blob 字段。在实现图像的显示时,

5、使用 stream 对象把 blob 字段的数据读入 stream 对象中,然后把stream 对象的数据存储为文件,再使用 image 控件的 picture 属性显示图片。二进制数据载入流对象后,实际上是通过调用该对象的 savetofile 方法并传入文件的路径保存到文件中的。采用流方式来处理图片信息,操作简单且高效,在实际中应用较多。使用 ado field 对象及 ado stream 对象的上述方法解决二进制数据的存取问题,实现了对高校题库管理系统的数据库信息的读写访问。2 实现过程2.1 把二进制数据写入关系表中以试题信息表为例,设置各个字段,其中试题内容字段数据类型为 imag

6、e,然后将字段对应的信息在 word 文档中编辑后,保存为图像格式文件(*.bmp、*.jpg、*.gif 均可) ,接下来,在 vb 中将文件导入数据库。3实现步骤及代码如下:在 vb 中打开一个标准工程,在该工程中会自动创建一个窗体,默认名为 form1。首先添加工程引用,勾选 microsoft activex data object 2.7 library, 单击工程菜单下的部件选项,在弹出的列表中选中 microsoft common dialog control 6.0,点击应用,确定。在 form1 窗体中放置一个 commondialog 控件,一个commandbutton

7、控件。下面是实现的主要代码。保存文件到数据库private sub savetodb(byref adofld as adodb.field, diskfile as string)on error goto selecterror: 错误处理, 没有选取文件dim bytedata() as byte 定义数据块数组dim numblocks as long 定义数据块个数dim filelength as long 标识文件长度dim leftover as long 定义剩余字节长度dim filenum as long 定义自由文件号dim i as long 定义循环变量filenu

8、m = freefile 提供一个尚未使用的文件号open diskfile for binary access read as finenum 打开diskfile 指定的文件filelength = lof(filenum) 得到文件长度if filelength = 0 then 判断文件是否存在close filenummsgbox diskfile & “ 无 内 容 或 不 存 在 !”elsenumblocks = filelength blocksize 得到数据块的个数leftover = filelength mod blocksize 得到剩余字节数redim byted

9、ata(blocksize) 重新定义数据块的大小for i = 1 to numblocksget filenum, , bytedata() 读到内存块中adofld.appendchunk bytedata() 写入 fldnext iredim bytedata(leftover) 重新定义数据块的大小get filenum, , bytedata() 读到内存块中adofld.appendchunk bytedata() 写入 fldclose filenum 关闭源文件end ifselecterror:exit subend sub2.2 从数据表中读出二进制数据内容,并显示到图像控件中首先添加一个窗体 form2,在窗体中添加 image 控件,命名为imgmath。添加 commandbutton 按钮,命名为 command2。下面以sql server2000 数据库中 tbtk 关系表 content 字段为例来说明。4在代码窗口中编写如下代码:从数据库中读取文件,并显示到图像控件中

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号