文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 307
阅读 9
收藏 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官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。 我们知道,数据库查询是数据库的最主要功能之一。我们都...

chirnson
2013/12/19
0
0
Mysql 中的blob相关问题

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

文文1
2015/09/08
17
0
Mysql如何实现跨表查询排序

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

5D同学
2012/04/27
1K
5

没有更多内容

加载失败,请刷新页面

加载更多

Prometheus + Grafana 监控 Linux 和 MySQL 安装配置

一、介绍Prometheus Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社区也十分活...

PeakFang-BOK
17分钟前
1
0
缓存与数据库的双写一致性问题

数据库与缓存的双写一致性问题 cache aside pattern 数据库与缓存的双写一致性 为什么是先删除缓存再更新数据库,而不是反过来 并发读写下的一致性问题 总结: 读请求和写请求串行化,串到一个...

grace_233
23分钟前
1
0
详解java并发包源码之AQS独占方法源码分析

AQS 的实现原理 学完用 AQS 自定义一个锁以后,我们可以来看一下刚刚使用过的方法的实现。 分析源码的时候会省略一些不重要的代码。 AQS 的实现是基于一个 FIFO 队列的,每一个等待的线程被封...

小刀爱编程
27分钟前
1
0
Golang中的panic和recover

func panic(interface{})和func recover() interface{}是Golang中用于错误处理的两个函数。 panic的作用就是抛出一条错误信息,从它的参数类型可以看到它可以抛出任意类型的错误信息。在函数...

xtof
32分钟前
1
0
Mybatis Mapper.xml 配置文件中 resultMap 节点的源码解析

相关文章 Mybatis 解析配置文件的源码解析 Mybatis 类型转换源码分析 Mybatis 数据源和数据库连接池源码解析(DataSource) Mybatis Mapper 接口源码解析(binding包) Mybatis 解析 SQL 源码...

tsmyk0715
38分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部