Delphi存取图像完整解决方案
作者: 来源:Internet 添加时间:2006-5-25 21:27:34 对于涉及图像数据的数据库应用程序,图像数据的存取技术是一个关键。由于缺少技术文档及DEMO例程演示,为此笔者在网上搜索了相关资料,有的根本不能用,有的过于繁杂,有的应用范围太窄(如只能适用于BMP图像),有的写得过于简单理解起来十分困难。。。而且在网上这也是大家比较关心的一个问题。笔者对这个问题进行了反复实作和探索,下边笔者将通过一个完整的简单例子来说明如何保存和显示SQL数据库中的图像数据(同时包括BMP和JPEG两种格式)。
一、 创建演示数据库
在SQL SERVER中新建一演示数据库:Demo,并创建一数据表Picture1,结构如下:
| 字段名 | Dtata Type | Identity | | Id | Int | Yes | | Isbmp | Tinyint | | | Myimage | Image | |
字段Isbmp是用来记录在Myimage中存入的图像的类型(0表JPEG,1表BMP,其它值表无图像),Isbmp数据类型选用整型Tinyint而末选用逻辑bit型主要是考虑到如下方法仍适用于ACCESS数据库。在SQL中打开表Picture1,添入几条记录,Myimage图像字段值暂不管,字段Isbmp值随便输入0和1之外的其它数。
二、 窗口设计
在DELPHI中新建一个工程,在FORM1上放置如表所示控件(考虑到TDBImage型控件不能正确显示JPEG型图像,所以选用Timage型控件显示所有类型图像)。
| 组件类别 | 组件属性名 | 属性值 | 用途说明 | | Timage | caption | Image1 | 显示图像 | | name | Image1 | | Stretch | True | | Tbutton | caption | 选择图像 | 选择图像 | | name | selectimage | | Tbutton | caption | 保存图像 | 保存图像到数据库 | | name | savetodb | | TADOConnection | caption | Adoconnection1 | 创建与数据库demo的连接 | | name | Adoconnection1 | | Connectionstring | 见备注 | | Connected | True | | Loginprompt | False | | Tadotable | Caption | Adotable1 | 建立与表Picture1的连接 | | name | Adotable1 | | Connection | Adoconnection1 | | Tablename | Picture1 | | Active | True | | Tdatasource | Name | Datasource1 | 建立数据源 | | Dataset | Adotable1 | | Topenpicturedialog | Caption | Openpicturedialog1 | 选择图像文件 | | Name | Openpicturedialog1 | | Tdbgrid | Caption | Dbgrid1 | 显示记录 | | Name | Dbgrid1 | | Datasource | Datasource1 |
备注:
adoconnection1.connectstring := Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=demo; Data Source=Mysqlserver Mysqlserver为SQL服务器的名称请据实际情况更改。
|
|