请问如何用SQL语句往SQLSERVER2000里插入图片
解决方案 »
- delphi FTP 上传文件时如何判断服务器上是否有相同的文件
- uses下面的单元各有些什么作用
- 如何获得硬盘序列号?
- 时间显示问题
- DSPack怎样实现无黑屏连续播放多个文件?
- 编程怎样实现access中对数据库的修复功能。
- 我是小新,写写那个语句可以吗?
- 哪位知道,为什么会出现:“Control '' has no parent window”的错误提示?
- 请问学习DelPhi是否应该有Pascal语言基础?
- DELPHI论坛上没有高人了,这么简单的问题都没人回答,我无话可说了。
- 谁知道这个问题怎么解决?
- 在dbgrid中,网格带了下拉之后,总是要回两次车才能移到右边的一列,能不能一次即选定,同时又将光标右移一列呢?
dm.Qwh.SQL.Text:=temp;
dm.Qwh.ParamByName('svox').LoadFromFile(edit4.text,ftBlob);
rs.CommandText:='select * from talbe1 where col1=''条件''';
rs.Open;
rs.Edit; TBlobField(rs.FieldByName('col2')).LoadFromFile(sFileName{文件}); rs.Post;
rs.Close;
用image类型方法:
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)
insert 表名 values(2,0x)
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
open;
append;
(FieldByName('字段名') as TBlobField).LoadFromFile(OpenDialog1.filename);
post;
显示
open;
(FieldByName('accessory') as TBlobField).VCLComObject :=nil;
//把图片生成一个文件,放在程序目录 ,名字是 temp_image.jpg(最好只用jpg图片)
(FieldByName('accessory') as TBlobField).savetoFile(ExtractFilePath(Application.ExeName)+'\temp_image.jpg');
//显示
image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) +'\temp_image.jpg');
//删除文件
deletefile(ExtractFilePath(Application.ExeName)+'\temp_image.jpg');
a:TMemoryStream;
begin
a:=tmemoryStream.Create;
a.clear;
TBlobField(ADODataSet1.FieldByName('file')).SavetoStream(a);
image1.picture.Graphic.LoadFromStream(a);
a.free;
的好一点
pic : Tjpegimage;
begin
pic := Tjpegimage.Create;
pic.LoadFromFile(openpicturedialog1.FileName); with dm.adoquery1 do
begin
close;
sql.Clear;
sql.Add('insert into classmate(name,email,phone,memo,pic) values(:h1,:h2,:h3,:h4,:h5)');
parameters[0].Value := nameedit.Text;
parameters[1].Value := emailedit.Text;
parameters[2].Value := phoneedit.Text;
parameters[3].Value := memo1.Text;
parameters[4].Assign(pic);
try
execsql;
showmessage('保存成功');
except
showmessage('保存失败'); end;
pic.Free;
end;
end;
image.picture.Bitmap.LoadFromStream(a); //没反应
Image.Picture.Bitmap.Assign(TBlobField(adocQuery.FieldByName('EP_Image')));
//从数据库中读图片
BMP的直接使用TABLE就可以添加到数据库中,但是对于JPG格式的,
我也是看了别人的例子,使用ADO给塞到数据库里的,读取也是一样的控件,
采用ADO是因为他的流控制比较简单,
procedure TForm1.QueryAddButtonClick(Sender: TObject);
var
s:TMemorystream;
begin
S:=TMemorystream.Create();
image1.Picture.Bitmap.SaveToStream(S);
s.Position:=0;
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('INSERT INTO TABLE3(Img,PID)');
Query.SQL.Add('VALUES(:I,:ID)');
Query.Parameters.Items[0].LoadFromStream(s,ftBlob);
Query.Parameters.Items[1].Value:=1;
Query.ExecSQL;
s.Free;
end;procedure TForm1.QueryReadButtonClick(Sender: TObject);
var
s:Tstream;
begin
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('SELECT Img FROM TABLE3');
Query.SQL.Add('Where PID=:ID');
Query.Parameters.Items[0].Value:=1;
Query.Open;
with Query do
s:=CreateBlobStream(Query.FieldByName('Img'),bmRead);
image2.Picture.Bitmap.LoadFromStream(s);
s.Free;
end;procedure TForm1.UpdButtonClick(Sender: TObject);
var
s:Tstream;
begin
S:=TMemorystream.Create();
image3.Picture.Bitmap.SaveToStream(S);
s.Position:=0;
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('UPDATE TABLE3');
Query.SQL.Add('SET Img=:I');
Query.SQL.Add('WHERE PID=:ID');
Query.Parameters.Items[0].LoadFromStream(s,ftBlob);
Query.Parameters.Items[1].Value:=1;
Query.ExecSQL;
s.Free;
end;