三层结构,程序启动不了,可能数据太大,请帮我看看(100分)

  • 主题发起人 主题发起人 sunxng
  • 开始时间 开始时间
S

sunxng

Unregistered / Unconfirmed
GUEST, unregistred user!
三层架构
我的数据库:sql,表中有存放图片的字段pic,现在记录共有459条,但是现在客户端使用cds_zz.active:=True时,程序无法加载,有时加载上,也要占用50M的内存,请问有没有解决的办法让程序正常启动,
再就是,程序在加载数据时,为什么服务器程序自动关闭?
程序提示:Error Reading From Socket,是什么原因?
 
图片建议客户需要看哪个再读取哪个,不要一起将图片读取过来
 
每张图片独立存放在盘上,文件名与表中的某一字段对应,
再做一个自动取图片文件的小程序.
 
图片是需要单独存取的,大的要用文件处理,并且最好是压缩的,小文件,例如个人照片等,可以使用二进制字段,使用压缩技术直接存数据库,一般看图片是一张一张的浏览,所以要在需要这张图片时单独下载和存取,这样才比较合理,只是我个人建议
 
1:如二楼所说,要哪个取哪个,最好是存放图片的单独用一个表
2:用流来读取图片数据
 
图片需要看时再读取出来,不要一起将图片读取到客户端,不然很容易查询死机.
 
我想问一下,如何分批查询数据,好比说每次10条记录,我将packetrecords改为10,但是使用.active=True,时好像不起作用
 
to wang0801:
我存取 的图片最大为 200K,怎样压缩?能说下原理吗?有代码更好 :)
望赐教!
 
不要把图片跟数据保存在同一张表里,不然保存,查询都容易出问题在三层里面
 
程序在查询数据时,为什么服务器程序自动关闭?
 
你用什么控件?DBExpress可以实现分批数据查询
 
没有使用DbExpress,在三层里说packetrecords=10,即可实现分批,只要浏览到第11条数据时,自动获取下10条记录,请帮我说明一下,谢谢
 
先设置ClientDataSet的PacketRecords
然后再ClientDataSet的AfterScroll事件里面判断现在是否是再最后一条记录
如果是,则取下一批记录GetNextPacket
 
可以参考Blob字段的设置,可以用panketrecord绑定,可以用getnextrecord函数依次再取下面的数据
 
谢谢,你们,有没有代码说明在AfterScroll判断是否到最后一条,再帮我看一下下面图片为什么不能保存到数据库
var mem:Tmemorystream;
begin
mem:=Tmemorystream.Create ;
mem.LoadFromFile('c:/sa.bmp');
adoquery1.Active :=False;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('update pic set pic=:pic where id='''+adotable1.Fieldbyname('id').AsString +'''');
adoquery1.Prepared;
adoquery1.ExecSQL;
adoquery1.Parameters.Add;
adoquery1.Parameters.ParamByName('pic').LoadFromStream(mem,ftblob);
mem.Free;
 
可以用数据集的Eof判断最后一条,试试看
图片的那个可以查找一下保存图片的程序
 
三层保存图片是否设置TdatasetProvider的属性?使用以下代码1无法正确保存图片,有时提示“右截位”,就算保存不提示出错,也无法使用代码2打开(提示Stream Read Error)?
1、 F_dm.cds_q.Active :=False;
F_dm.cds_q.CommandText:='update pic set pic=:pic where id='''+F_dm.cds_zz.fieldbyname('id').AsString +'''';
F_dm.cds_q.Params.ParamByName('pic').Assign(image3.Picture.Graphic );
F_dm.cds_q.Execute;
2、 Image3.Picture:=nil;
if a_q2('select id,pic from pic where id='''+F_dm.cds_zz.fieldbyname('id').AsString +'''')>0 then
//a_q2位取得pic表中是否有id=某一值,的记录条数
image3.Picture.Assign(F_dm.cds_q.FieldByName('pic') );
 
怎么没有回答的?都在忙什么?先谢谢了
 
楼上各位,对于客户端显示图片,你们提出的都已经采纳,非常实用,但是客户端如何将图片保存到数据库,我弄了3天了,都不行,在显示时提示(Stream Read Error),请你们帮个忙看一下
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部