我一直不认为能把代码写的和天书一样的程序员是好的程序员,那不过是因为我真的对delphi也就是略懂皮毛,太深了看不懂。
网上查询数据库存取图片的方式,看的是一头雾水,有人提出保存路径使用时再调用,方法很好,但现实很残酷,在客户端使用时才发现,无法调用服务器端的路径和图片(我指的服务器也就是一台部门使用的普通的PC机,只不过是安装了数据库而已)。使用网络路径需要将服务器端的图片目录共享,或者使用FTP上传下载,不是不安全,就是很麻烦。
一个部门也就200人左右,保存成图片,规格小一点,数据库应该不会太大,调用速度应该不会太慢的,于是又回归了数据库保存的思路。
人懒了写代码就愿意少一点,研究后才发现,网上那些复杂的代码就是故意让人们发晕的。
只为了演示如何存取,什么控件、路径、对话框什么的就省了,知道怎么保存和取出图片就行了。sql数据库图片字段使用image类型,存储时如果要显示图片建议使用TImage,取图显示时建议使用TDBImage。

存储图片
procedure TForm1.Button1Click(Sender: TObject);
var
  Picture1: TPicture;
begin
  Picture1 := TPicture.create;
  Picture1.loadfromfile('你自己定义的图片路径+名字.bmp'); 
  image1.picture.loadfromfile('你自己定义的图片路径+名字.bmp');
  ADOQuery1.Close;
  ADOQuery1.sql.clear;
  ADOQuery1.sql.add('insert into pic values(:名字,:图片) ');
  ADOQuery1.Parameters.ParamByName('名字').Value :='你自己定义的名字';
  ADOQuery1.Parameters.ParamByName('图片').Assign(Picture1);
  ADOQuery1.ExecSQL;
  Picture1.Free;
end;

取出图片
procedure TForm1.Button2Click(Sender: TObject);
begin
  ADOQuery1.Close;
  ADOQuery1.sql.clear;
  ADOQuery1.sql.add('select * from pic where 名字:=名字');
  ADOQuery1.Parameters.ParamByName('名字').Value :='你自己查询的名字';
  ADOQuery1.Open;
  DBEdit1.Text:=ADOQuery1.FieldByName('名字').AsString;
  DBImage1.DataField:='图片';        //可在属性里直接设置
  DBImage1.DataSource:=DataSource1;    //可在属性里直接设置

end;

建议:该方法只支持image格式的图片,tiff格式的图片支持存储,取出时还需要自己捉摸一下。在应用期间查询时,建议其他字段和image数据类型的字段分开查询,尤其是遍历数据库记录时,否则记录多了速度会很慢。
---------------------
作者:秋天之落叶
来源:CSDN
原文:https://blog.csdn.net/leavesguth/article/details/76178153
版权声明:本文为博主原创文章,转载请附上博文链接!

delphi使用ADO在sql数据库存取图片的方法的更多相关文章

  1. android开发之数据库存取图片

    Android数据库中存取图片通常使用两种方式,一种是保存图片所在路径,二是将图片以二进制的形式存储(sqlite3支持BLOB数据类型).对于两种方法的使用,好像第二种方法不如第一种方法更受程序员欢 ...

  2. android 数据库存取图片

    Android数据库中存取图片通常使用两种方式,一种是保存图片所在路径,二是将图片以二进制的形式存储(sqlite3支持BLOB数据类型).对于两种方法的使用,好像第二种方法不如第一种方法更受程序员欢 ...

  3. 复习课程jdbc:使用配置文件properties进行连接数据库,数据库存取图片,批处理,时间戳,事物回滚等等

    使用配置文件properties进行连接数据库 首先创建一个file自定义文件名,但是后缀名必须改为.properties(不分大小写):如config.properties: 然后双击config. ...

  4. C# - 数据库存取图片

    1.创建数据表 CREATE TABLE Tb_pic ( ID int primary key identity(1, 1) not null, PictureBox varchar(max) ) ...

  5. 小谈c#数据库存取图片的方式

    第一种方式   文件夹与数据库配合 /// <summary> /// 上传图片 /// </summary> /// <param name="FUSShop ...

  6. Delphi使用ADO进行数据库编程

    Delphi是一个可视化的编程工具,ADO编程也是这样,所以话不多言,直接通过代码.截图和语言来说明. 我的数据库是Oracle,为了测试,先建一个表:create table practice(un ...

  7. delphi实现ado的高级功能

    ADO是Microsoft存取通用数据源的标准引擎.ADO通过封装OLE DB而能够存取不同类型的数据,让应用程序能很方便地通过统一的接口处理各种数据库.ADO由一组COM对象组成,每一个不同的原生A ...

  8. Delphi中ADO异步执行方式

    当ADO开始处理数据后,应用程序必须等到ADO处理完毕之后才可以继续执行.但是除了同步执行方式之外,ADO也提供了异步执行的方式,允许当ADO处理时,应用程序仍然能够先继续执行.而当ADO处理数据完毕 ...

  9. Delphi 原生ADO(二)

    我发现很多朋友在开发数据库时都使用 Delphi 自带的 ADO 组 件 或 Diamond ADO,其实在 Delphi 中使用原生 ADO 接口也是十分方便和有效的.我使用原生 ADO 开发项目已 ...

随机推荐

  1. VScode配置CMD本地运行环境(2.0)

    VScode配置CMD本地运行环境(2.0) 官方Task.json说明 完整的Task.json配置信息 Task.json预定义变量 看了很多网上的教程都说需要下载VScode的python插件, ...

  2. Android Studio Run/Debug configuration error: Module not specified

    如下图,配置时没有module可选,因此报错error: Module not specified 解决方法: 1.打开根目录的settings.gradle,删除include ':app' 2.在 ...

  3. 李宏毅老师机器学习课程笔记_ML Lecture 1: ML Lecture 1: Regression - Demo

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  4. bzoj4693

    题意 bzoj 做法 结论1:对于\((X_1,X_2,...,X_k)\),其为红的充要条件为:令\(Y_i=X_i-1\),\(\prod\limits_{k=1}^K {\sum\limits_ ...

  5. WScript.Shell 与 Shell.Application 的不同

    本文主要对比,VBScript 中 CreateObject("WScript.Shell") 和 CreateObject("Shell.Application&quo ...

  6. Api接口幂等设计

    1,Api接口幂等设计,也就是要保证数据的唯一性,不允许有重复. 例如:rpc 远程调用,因为网络延迟,出现了调用了2次的情况. 表单连续点击,出现了重复提交. 接口暴露之后,会被模拟请求工具(Jem ...

  7. iOS 项目优化

    前言 iOS性能优化系列篇之"优化总体原则" 不要提前过度优化 要找到性能瓶颈 要在不同性能指标间权衡 要理解优化任务的底层运行机制 要有技术保障体系 一.启动速度优化 1.1 学 ...

  8. [vijos]1083小白逛公园<线段树>

    描述 小新经常陪小白去公园玩,也就是所谓的遛狗啦…在小新家附近有一条“公园路”,路的一边从南到北依次排着n个公园,小白早就看花了眼,自己也不清楚该去哪些公园玩了. 一开始,小白就根据公园的风景给每个公 ...

  9. Vue 里面对树状数组进行增删改查 的方法

    [{"id":"5e4c3b02fc984961a17607c37712eae0", "optLock":0, "parentId ...

  10. markdown中锚链接实现目录跳转以及注意事项

    当文章有分类,需要快速阅读,通常会先在文首部写一个目录,点击可以跳转. 为文章写目录,特别在文章较长的时候,有助于对内容的整体把握,能提高阅读效率. 以下,将写一个基本的锚目录demo,然后特别说明需 ...