文档章节

如何在数据表中存取图片 - 回复 "三足乌" 的问题

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 307
阅读 8
收藏 0

问题来源: http://www.cnblogs.com/del/archive/2009/05/28/1491186.html#1801853

准备工作:
1、在空白窗体上添加: ClientDataSet1、Button1
2、激活窗体的 OnCreate 事件、激活 Button1 的 OnClick 事件

实现代码:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBClient;

type
  TForm1 = class(TForm)
    ClientDataSet1: TClientDataSet;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const
  PicPath1 = 'c:\temp\test1.bmp'; {保证测试图片的存在}
  PicPath2 = 'c:\temp\test2.bmp';

{建立数据表并载入数据}
procedure TForm1.FormCreate(Sender: TObject);
begin
  {建表}
  with ClientDataSet1 do begin
    FieldDefs.Add('Name', ftWideString, 8);
    FieldDefs.Add('Age', ftInteger);
    FieldDefs.Add('Picture', ftGraphic);
    CreateDataSet;
  end;

  {添加第一条数据}
  ClientDataSet1.Append;
  ClientDataSet1['Name'] := '张三';
  ClientDataSet1['Age']  := 66;
  TGraphicField(ClientDataSet1.FieldByName('Picture')).LoadFromFile(PicPath1);

  {添加第二条数据}
  ClientDataSet1.Append;
  ClientDataSet1['Name'] := '李四';
  ClientDataSet1['Age']  := 16;
  TGraphicField(ClientDataSet1.FieldByName('Picture')).LoadFromFile(PicPath2);
end;

{读出指定记录中的图片数据}
procedure TForm1.Button1Click(Sender: TObject);
var
  BlobStream: TClientBlobStream;
  GraphicField: TGraphicField;
  Bitmap: TBitmap;
begin
  {查找姓名是李四的记录}
  if ClientDataSet1.Locate('Name', '李四', []) then //可以把其中的李四换成张三试试
  begin
    {读取其 Picture 字段}
    GraphicField := ClientDataSet1.FieldByName('Picture') as TGraphicField;
    {读入到 Blob 流}
    BlobStream := TClientBlobStream.Create(GraphicField, bmRead);
    {给一个 TBitmap 流是为了看看}
    Bitmap := TBitmap.Create;
    Bitmap.LoadFromStream(BlobStream);
    Canvas.Draw(10, 10, Bitmap);
    Bitmap.Free;
    //
    BlobStream.Free;
  end;
end;

end.

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2010/04/14/1712157.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
评论在数据库中存储!!

而这些不同的动作对应的数据其实是存在不同的表中,例如话题表、回帖表、评论表等等。 今天主要是介绍 OSChina 是如何将这些属于不同范围的数据汇总到用单一时间轴进行展示的动态。 动态表 ...

zjg23
2016/12/15
17
1
今天遇到的一个面试题,我比较没思路,大家帮忙看看帮忙给个思路或代码

今天面试,遇到一个问题,学的不是很好,向大家求助。问题如下: 有一个txt文档,里面有两个字段,一个name,一个age。然后底下是两百万条数据,类似于如图: 第一问:如何将这一百万条数据通...

明舞
2013/07/22
764
7
Mysql如何实现跨表查询排序

问题说明: 现有表字段结构如下: 1、message ————id (自增,主键) ————title ————content 2、comment ————id (自增,主见) ————mid (message表 id) ————contn...

5D同学
2012/04/27
1K
5
Mysql 中的blob相关问题

一、MySQL BLOB 类型介绍 MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。BLOB类型实际是个类型系列(TinyBlob、Blob、MediumBlob、LongBlob)...

文文1
2015/09/08
17
0
深入数据库索引背后算法及数据结构

MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。 我们知道,数据库查询是数据库的最主要功能之一。我们都...

chirnson
2013/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

5、前后端分离跨域问题

在以往的开发中,前后端分离也不是像现在这么热门,所谓的前端工程师也只不过是写好静态页面由Java工程师或者php工程师嵌入到页面中进行开发,这或许加重了这些工程师的工作量,而且在样式调...

永远的Chester
26分钟前
0
0
全志T3 Linux显示驱动分析

1、总体架构 全志T3处理器的显示框架是基于标准Linux的帧缓冲架构,其结构如图 1.1所示。显示控制器DE的驱动架构如图 1.2所示,包括屏蔽差异的显示管理抽象层,以及显示图层驱动、显示设备驱...

pnsam301
34分钟前
0
0
【HAVENT原创】VUE2 经验问题汇总

新建一个 Vue 实例可以有下列两种方式: 1. new 一个实例 var app= new Vue({ el:'#todo-app', // 挂载元素 data:{ // 在.vue组件中data是一个函数,要写成data () {}这种方式 i...

HAVENT
37分钟前
0
0
IO基础知识

读文件,可以使用内置的open(file,mode); with 语句自动close; 查看当前目录的绝对路径:os.path.abspath('.'); 创建目录:os.mkdir(path); 删除目录:os.rmdir(path); 拼接路径推荐使用:o...

年轻的中年大叔
39分钟前
0
0
BATJ等大厂最全经典面试题分享

金九银十,又到了面试求职高峰期,最近有很多网友都在求大厂面试题。正好我之前电脑里面有这方面的整理,于是就发上来分享给大家。 这些题目是网友去百度、蚂蚁金服、小米、乐视、美团、58、...

老道士
42分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部