把流存到数据库中,俺不会(20分)

  • 主题发起人 主题发起人 crazymoon
  • 开始时间 开始时间
C

crazymoon

Unregistered / Unconfirmed
GUEST, unregistred user!
使用ADO部件,SQL数据库 或 ACCESS数据库
请问:在SQL和ACCESS中各应使用什么类型的字段?
怎么写进去。
 
sql用text或picture就可以了
access不知道,
写流的话,你在论坛里找一下,太多了。
 
我是教育网,奶奶的,不能检索
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2296714
希望对你有所帮助,图片类型SQL SERVER中的image类型
 
to 草原牧歌,
我水平不高,看不太懂。
能否简单一点。
我就是一个内存流要存到数据库中。
在SQL和ACCESS中各应使用什么类型的字段?
怎么写进去
 
我也不会,帮你顶一顶吧.
 
SQL2000 用image类型的字段

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, StdCtrls, ADODB, Grids, DBGrids;

type
TForm1 = class(TForm)
Database1: TDatabase;
Query1: TQuery;
Button1: TButton;
Button2: TButton;
Query1liu: TBlobField;
Query1name: TStringField;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
//将文件变成流,然后保存到数据库当中
procedure TForm1.Button1Click(Sender: TObject);
var
s:tstream;
begin
s:=tfilestream.Create('e:/pic.rar',fmopenread);
try
with adoquery1 do
begin
sql.Clear;
sql.Add('insert into liu (name,liu) values(:a,:b)');
parameters.ParamByName('a').Value:=2;
parameters.ParamByName('b').LoadFromStream(s,ftblob);
execsql;
end;
finally
s.Free;
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
var mypath,mypassw:string;
begin
mypath:='';
mypassw:='';
ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
MyPath+'db2.mdb;Jet OLEDB:Database Password='+
MyPassW+';Persist Security Info=False';
end;

//将数据流从数据库中取出来,保存成文件
procedure TForm1.Button2Click(Sender: TObject);
begin
with adoquery1 do
begin
sql.Clear;
sql.Text:='select name,liu from liu';
open;
tblobfield(fieldbyname('liu')).SaveToFile('e:/lizi/temp/temp.asp');
end;
adoquery1.Close;
end;

end.
 
fphuang,
在SQL中试过了可用,ACCESS中应使用什么类型的字段?
ACCESS中怎么用?

 
ACCESS用OLE对象
下面是我保存JPEG到ACCESS数据库的例子
var
MyJPEG : TJPEGImage;
MS: TMemoryStream;
begin
MyJPEG := TJPEGImage.Create;
try
with MyJPEG do
begin
if (ViewPic.Picture.Graphic<>nil) and(Edit_Name.Text<>'') then
begin
Assign(ViewPic.Picture.Graphic);
MS:=TMemoryStream.create;//
SaveToStream(MS); //
MS.Position:=0; //
if EditMode then ADOTable1.Edit
else ADOTable1.Append;
TBlobField(ADOTable1.FieldbyName('file')).LoadFromStream(MS);//
ADOTable1.FieldByName('name').AsString:=Edit_Name.Text;
ADOTable1.Post;
Messagebox(Getactivewindow(),'图像保存完毕!'+#13+#10,'保存',MB_OK+MB_ICONQUESTION);
end;
end;
finally
MyJPEG.Free;
EditMode:=False;
end;
end;
//部分是文件转流和保存的部分!

=========================================
//读取的部分
var
Tempstream:TStringStream;
Tempjpeg:TJPEGImage;
begin
try
Tempstream:=TStringStream.Create(' ');
TBlobField(ADOTable1.FieldByName('file')).SaveToStream(tempstream);
Tempstream.Position:=0;
Tempjpeg:=TJPEGImage.Create;
Tempjpeg.LoadFromStream(Tempstream);
ViewPic.Picture.Bitmap.Assign(tempjpeg);
Edit_Name.Text:=ADOTable1.FieldByName('name').AsString;
finally
Tempstream.Free;
Tempjpeg.Free;
EditMode:=True;
end;
end;

直接抄了自己的代码给你!具体的自己做修改吧!
 
感谢fphuang,江南大米。二人各得一半。
顺便再问一个小问题。
sql SERVER,把客户端放在网络上测试,客户机上要安装什么东西吗。我就使用了DSN,在本机上测试通过,把DSN文件拷到客户机上,为什么不行。
 
多人接受答案了。
 
后退
顶部