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

问题来源: 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.

原文地址:https://www.cnblogs.com/jijm123/p/8232837.html

时间: 2024-12-10 02:29:14

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

thinkphp5.0查询到的数据表中的路径是反斜杠导致无法正常显示图片怎么办?

添加到数据表中图片的路径有时会是反斜杠,这就导致了在url后面写路径的时候会识别不出来(不过src后面写路径就可以识别),所以就需要把路径中的反斜杠替换成正斜杠,代码如下: 1 $datu = Db::query('select images from think_ad where ad_position_id = 22'); 2 $str = ""; 3 foreach($datu as $v) 4 { 5 $str .= implode($v); 6 $str .= "|

默认情况下,不使用of子句表示在select所有的数据表中加锁(转)

Select …forupdate语句是我们经常使用手工加锁语句.通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作.同时,在多版本一致读机制的支持下,select语句也不会被其他类型语句所阻碍. 借助for update子句,我们可以在应用程序的层面手工实现数据加锁保护操作.本篇我们就来介绍一下这个子句的用法和功能. 下面是采自Oracle官方文档<SQLLanguage Reference>中关于for update子句的说明:(请双击点开图片查看) 从for

c#用NPOI将excel文件内容读取到datatable数据表中

将excel文件内容读取到datatable数据表中,支持97-2003和2007两种版本的excel 1.第一种是根据excel文件路径读取excel并返回datatable 1 /// <summary> 2 /// 将excel文件内容读取到DataTable数据表中 3 /// </summary> 4 /// <param name="fileName">文件完整路径名</param> 5 /// <param name=

code first网站发布后数据表中没有数据问题

code first网站发布后数据表中没有数据问题 (1).将internal sealed class Configuration类访问修饰符改为public  class Configuration : DbMigrationsConfiguration<SimpleNews.EntityModels.SimpleNewsContext> (2).在Global文件的Start()方法中加入下面一段代码 Database.SetInitializer( new MigrateDatabas

使用PreparedStatement向数据表中插入、修改、删除、获取Blob类型的数据

Blob介绍 BLOB类型的字段用于存储二进制数据 MySQL中,BLOB是个类型系列,包括:TinyBlob.Blob.MediumBlob.LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同. MySQL的四种BLOB类型 类型       大小(单位:字节) TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G Oracle LOB介绍 LOB,即Large Objects(大对象),是用来存储大量的二

MySQL查询数据表中数据记录(包括多表查询)

MySQL查询数据表中数据记录(包括多表查询) MySQL查询数据表中数据记录(包括多表查询) 转自:http://www.baike369.com/content/?id=5355 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: select selection_list // 要查询的内容,选择哪些列 from table_list // 从什么表中查询,从何处选择行 where primary_

Oracle使用游标删除所有用户数据表中的所有记录脚本

应用场景:因为数据库中的数据涉及机密信息,希望一次性能删除掉所有数据,只保留数据表结构,供新项目开发程序用 测试结果:经查询已删除所有数据 存在问题:数据表如果存在外键的话下面脚本可能执行不成功,请自行删除或者过滤掉该表,见下图 操作办法:直接将下面的脚本内容复制到PQSQL中执行即可 --Oracle使用游标删除所有用户数据表中的所有记录脚本 declare mystring NVARCHAR2(1000):=''; --定义要输出的字符串变量 cursor mycursor is --定义游

c#在sql中存取图片image示例

这篇文章主要介绍了c#在sql中存取图片image示例,需要的朋友可以参考下 (1)控制台应用程序下演示插入图片 复制代码 代码如下: public void InsertIMG() { //将需要存储的图片读取为数据流 FileStream fs = new FileStream(@"E:\c.jpg", FileMode.Open,FileAccess.Read); Byte[] btye2 = new byte[fs.Length]; fs.Read(btye2 , 0, Con

Mysql 如何删除数据表中的重复数据!

1.使用distinct查询所有不重复的记录 2.创建数据表相同结构的临时表,将第一步的数据复制进去 create temporary table if not exists student_temp as (select distinct(name), sex from student); 3.truncate table student; 4.insert into student(id,name,sex) select null,name,sex from student_temp; My