最简单的,2个字段,Title(varchar型)和FileData(image型) 写入 with query1 do begin close; sql.Clear; sql.Text := 'select * from filebase where 1=2'; open; append; FieldByName('Title').AsString := 'Test'; TBlobField(Query1.FieldByName('FileData')).LoadFromFile('c:\a.jpg'); post; close; end; // end of with读出procedure TForm1.Button2Click(Sender: TObject); var ms:TMemoryStream; begin ms := TMemoryStream.Create; with Query1 do begin Close; SQL.Clear; SQL.Text := 'select * from filebase where id = 1'; Open; ms.LoadFromStream(Query1.CreateBlobStream(Query1.FieldByName('FileData'),bmRead)); ms.SaveToFile('c:\_from_database.jpg'); Close; end; // end of rs
ms.Free; ShowMessage('ok'); end;
请问楼上用哪个控件来显示?我用DBimage怎么都看不到?还有,我运行了一下,数据库里面一下子多了5个记录……'select * from filebase where 1=2' 这里的“where 1=2”是什么意思呢?
1、建立过程
CREATE PROCEDURE sp_textcopy (
@srvname varchar (30),
@login varchar (30),
@password varchar (30),
@dbname varchar (30),
@tbname varchar (30),
@colname varchar (30),
@filename varchar (30),
@whereclause varchar (40),
@direction char(1))
AS
DECLARE @exec_str varchar (255)
SELECT @exec_str =
'textcopy /S ' + @srvname +
' /U ' + @login +
' /P ' + @password +
' /D ' + @dbname +
' /T ' + @tbname +
' /C ' + @colname +
' /W "' + @whereclause +
'" /F ' + @filename +
' /' + @direction
EXEC master..xp_cmdshell @exec_str 2、建表和初始化数据
create table 表名 (编号 int,image列名 image)
go
insert 表名 values(1,0x) -- 必须的,且不是null
insert 表名 values(2,0x) -- 必须的,且不是null
go3、读入
sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.bmp','where 编号=1','I' --注意条件是 编号=1sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.doc','where 编号=2','I' --注意条件是 编号=2go4、读出成文件
sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.bmp','where 编号=1','O' --注意条件是 编号=1sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.doc','where 编号=2','O' --注意条件是 编号=2
go************如果报textcopy不是可执行文件的话,你就到
C:\Program Files\Microsoft SQL Server\MSSQL\Binn
目录下拷备 textcopy.exe到:
C:\Program Files\Microsoft SQL Server\80\Tools\Binn
1。转为二进制存储 存的是varchar类型的路径 --------程序里读路径加载
2。存相对路径,到时候读路径 存的是二进制的数据,------先转成图处,用临时接收,再贴到控件上,
写入
with query1 do
begin
close;
sql.Clear;
sql.Text := 'select * from filebase where 1=2';
open;
append;
FieldByName('Title').AsString := 'Test';
TBlobField(Query1.FieldByName('FileData')).LoadFromFile('c:\a.jpg');
post;
close;
end; // end of with读出procedure TForm1.Button2Click(Sender: TObject);
var
ms:TMemoryStream;
begin
ms := TMemoryStream.Create;
with Query1 do
begin
Close;
SQL.Clear;
SQL.Text := 'select * from filebase where id = 1';
Open; ms.LoadFromStream(Query1.CreateBlobStream(Query1.FieldByName('FileData'),bmRead));
ms.SaveToFile('c:\_from_database.jpg'); Close;
end; // end of rs
ms.Free; ShowMessage('ok');
end;
这里的“where 1=2”是什么意思呢?