请问:如何将文件插入数据库? |
尚未結案
|
houyu73
一般會員 發表:2 回覆:0 積分:0 註冊:2003-05-17 發送簡訊給我 |
我想将*.exe,*.bmp,*.wav,*.mp3,*.doc等等文件以“流”的方式插入SQL SERVER 2000数据库,并将其随时还原到文件形式,请问,数据库字段应用何种数据格式,如何运用“流”的方式完成上述工作?
我已经可以将*.bmp以DBImage存入SQL2000的image字段,将文本以DBmemo存入SQL2000的ntext字段,*.bmp存入后尺寸大,反应慢,*.jpg文件DBImage可显示但存不进image字段。
(我常从网上下载图片,小说,小程序,mp3,midi等等,想存入自己的SQL2000中,好查好找,图个方便)
普通的TFileStream,TMemoStream我常用,但上述问题近来一直未能解决,真是一个遗憾!
望各位大侠指点一二。
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
wnhoo
高階會員 發表:75 回覆:443 積分:198 註冊:2003-04-22 發送簡訊給我 |
//JPG图象存入MS SQL Server中.
保存jpg:
TBlobField(query1.Fields[n]).LoadFrom('xxx.jpg');
读取并显示jpg:
var
Mem: TMemoryStream;
Jpg: TJpegImage;
begin
mem:=TMemoryStream.Create;
Jpg:=TJpegImage.Create;
TBlobField(query1.Fields[n]).SaveToStream(mem);
Jpg.LoadFromStream(mem);
image1.picture.Bitmap.Assign(Jpg);
mem.Free;
Jpg.Free;
end;
(1).在Uses中加入JPEG单元;
(2).定义一个全程变量,例如var AJPEG:TJPEGImage;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,JPEG, StdCtrls, Buttons, ExtDlgs;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
OpenPictureDialog1: TOpenPictureDialog;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
AJPEG:TJPEGImage;
x,y:integer;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Canvas.Pen.Color:=clBlack;
Canvas.Pen.Style:=psSolid;
Canvas.Brush.color:=clBtnFace;
Canvas.Brush.Style:=bsSolid;//此上是设置Canvas的一些属性,便于以后调入JPEG文件
if OpenPictureDialog1.Execute then
begin
AJpeg.Free;//释放旧AJpeg;
AJpeg:=TJpegImage.Create;//产生一个新的AJpeg;
AJpeg.LoadFromFile(OpenPictureDialog1.Filename);//载入JPEG文件;
end;
Canvas.Rectangle(2,2,700,450);//画一个黑框的矩形将图片围住;
x:=20;
y:=20;
Form1.Canvas.Draw(x,y,AJpeg);//显示新的AJpeg;
end;
end.
//读出文件的长度
var
f: file of Byte;
size : Longint;
begin
AssignFile(f, 'f:\t.exe');
Reset(f);
size := FileSize(f);
edit1.text := IntToStr(size);
CloseFile(f);
end;
或:
var
fh:integer;
fs:longint;
begin
fh:=fileopen('文件名',fmopenread);
fs:=fileseek(fh,0,2);
fileclose(fh);
end; // 将字符串用二进制模式写入文件
var
filehandle:integer;
filename:string;
fn:string;
begin
filehandle:=fileopen(filename,fmopenreadwrite);
fileseek(filehandle,i*256,0);
getmem(buffer,300);
try
strpcopy(buffer,fn);
filewrite(filehandle,buffer^,256);
finally
freemem(buffer);
end;
fileclose(filehandle);
end;
end; 供参考!!! 风花雪月 e梦情缘
------
风花雪月 e梦情缘 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |