Delphi将图像插入数据库firebird
我有很多字段的表(雇员) 名字、姓氏、中间名、图像等 我正在使用dbExpress(TclientDataset)并在发布后的事件中包含代码Delphi将图像插入数据库firebird,delphi,delphi-xe2,Delphi,Delphi Xe2,我有很多字段的表(雇员) 名字、姓氏、中间名、图像等 我正在使用dbExpress(TclientDataset)并在发布后的事件中包含代码 clientdataset1.applyupdates(0) 它可以工作,但我也想插入/更新图像,但它不会将图像保存到数据库(Fire bird) id在google中搜索,但它不符合我的要求,请帮助,谢谢下面是我整理的一个项目的来源和DFM,看看我是否遇到了与您相同的问题。 我不。它成功地将.BMP文件加载并保存到CDS1Image字段 你没有说你的
clientdataset1.applyupdates(0)
它可以工作,但我也想插入/更新图像,但它不会将图像保存到数据库(Fire bird)
id在google中搜索,但它不符合我的要求,请帮助,谢谢下面是我整理的一个项目的来源和DFM,看看我是否遇到了与您相同的问题。 我不。它成功地将.BMP文件加载并保存到CDS1Image字段 你没有说你的列类型是什么,但是在我的FBDB中,Image列被定义为BLOB 顺便说一句,我不确定你想处理什么样的图像,但有一个长期存在的问题是TDBImage不能处理JPEG
procedure TForm2.GetImage;
var
ImageFN : String;
MS : TMemoryStream;
begin
if OpenDialog1.Execute then begin
ImageFN := OpenDialog1.FileName;
end;
MS := TMemoryStream.Create;
MS.LoadFromFile(ImageFN);
MS.Seek(0, soBeginning);
try
CDS1.Edit;
CDS1Image.LoadFromStream(MS);
CDS1.Post;
finally
MS.Free;
end;
end;
procedure TForm2.RefreshCDS;
begin
CDS1.ApplyUpdates(0);
CDS1.Close;
CDS1.Open;
end;
procedure TForm2.CDS1NewRecord(DataSet: TDataSet);
var
ID : Integer;
begin
Inc(ID);
if SqlQuery2.Active then
SqlQuery2.Close;
SqlQuery2.Open;
ID := 1 + SqlQuery2.Fields[0].AsInteger;
CDS1.FieldByName('ID').AsInteger := ID;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
CDS1.Open;
end;
procedure TForm2.btnGetImageClick(Sender: TObject);
begin
GetImage;
end;
procedure TForm2.btnRefreshClick(Sender: TObject);
begin
RefreshCDS;
end;
DFM
对象格式2:TForm2
左=256
Top=95
标题='Form2'
ClientHeight=303
ClientWidth=452
颜色=clBtnFace
Font.Charset=默认字符集
Font.Color=clWindowText
字体高度=-11
Font.Name='Tahoma'
Font.Style=[]
OldCreateOrder=False
OnCreate=FormCreate
PixelsPerInch=96
text高度=13
对象DBGrid1:TDBGrid
左=8
Top=8
宽度=320
高度=120
数据源=数据源1
TabOrder=0
TitleFont.Charset=默认字符集
TitleFont.Color=clWindowText
标题字体高度=-11
TitleFont.Name='Tahoma'
TitleFont.Style=[]
终止
对象DBNavigator1:TDBNavigator
左=24
顶部=144
宽度=240
高度=25
数据源=数据源1
TabOrder=1
终止
对象btnRefresh:TButton
左=350
Top=8
宽度=75
高度=25
标题=‘刷新’
TabOrder=2
OnClick=btnRefreshClick
终止
对象DBImage1:TDBImage
左=128
Top=175
宽度=105
高度=105
数据字段='IMAGE'
数据源=数据源1
TabOrder=3
终止
对象BTN时间:t按钮
左=350
Top=64
宽度=75
高度=25
标题='GetImage'
TabOrder=4
OnClick=btnGetImageClick
终止
对象SQLConnection1:TSQLConnection
DriverName=‘火鸟’
LoginPrompt=False
参数字符串=(
'DriverUnit=Data.DBXFirebird'
'DriverPackageLoader=TDBXDynalinkDriverLoader,DbxCommonDriver180'+
“bpl”
'DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borla'+
'nd.Data.DbxCommonDriver,版本=18.0.0.0,区域性=中性,PublicK'+
'eyToken=91D62EB5B0D1B1B'
'MetaDataPackageLoader=TDBXFirebirdMetaDataCommandFactory,DbxFire'+
“birdDriver180.bpl”
'MetaDataAssemblyLoader=Borland.Data.TDBXFirebirdMetaDataCommandF'+
'actory,Borland.Data.DbxFirebirdDriver,版本=18.0.0.0,区域性=n'+
'eutral,PublicKeyToken=91D62EB5B0D1B1B'
'GetDriverFunc=getSQLDriverINTERBASE'
'LibraryName=dbxfb.dll'
'LibraryNameOsx=libsqlfb.dylib'
'VendorLib=fbclient.dll'
'VendorLibWin64=fbclient.dll'
'VendorLibOsx=/Library/Frameworks/Firebird.framework/Firebird'
'Database=d:\delphi\firebird\databases\employee.fdb'
“User_Name=sysdba”
'密码=主密钥'
'角色=角色名称'
'MaxBlobSize=-1'
“LocaleCode=0000”
“IsolationLevel=ReadCommitted”
“SQLDialogue=3”
“CommitRetain=False”
'WaitOnLocks=True'
“TrimChar=False”
'BlobSize=-1'
'ErrorResourceFile='1!'
'RoleName=RoleName'
'服务器字符集='
“Trim Char=False')
已连接=真
左=40
Top=24
终止
对象SQLQuery1:TSQLQuery
MaxBlobSize=1
参数=
SQLConnection=SQLConnection1
左=112
Top=24
终止
对象数据源1:TDataSource
数据集=CDS1
左=272
Top=88
终止
对象CDS1:TClientDataSet
活动=真
聚合=
CommandText='select*from maimages'
参数=
ProviderName='DataSetProvider1'
AfterOpen=CDS1AfterOpen
OnNewRecord=CDS1NewRecord
左=280
Top=24
对象CDS1ID:TIntegerField
字段名='ID'
必需=真
终止
对象CDS1NAME:TStringField
FieldName='NAME'
尺寸=50
终止
对象CDS1IMAGE:TBlobField
字段名='IMAGE'
尺寸=1
终止
终止
对象DataSetProvider1:TDataSetProvider
数据集=SQLQuery1
选项=[poAllowCommandText,poUseQuoteChar]
左=184
Top=24
终止
对象OpenDialog1:TopEndDialog
过滤器='BMPs |*.Bmp'
左=400
Top=32
终止
对象SQLQuery2:TSQLQuery
活动=真
MaxBlobSize=1
参数=
SQL.Strings=(
'从maimages中选择最大(ID)')
SQLConnection=SQLConnection1
左=16
顶部=120
终止
终止
将图像保存到数据库时,您尝试使用什么字段类型。在使用数据库和保存任何二进制数据(图像、文件)时,最常用的字段类型是Blob字段类型。是的,我对图像使用Blob字段类型现在它可以工作了,这要感谢您的右dbimage不处理JPEG文件
object Form2: TForm2
Left = 256
Top = 95
Caption = 'Form2'
ClientHeight = 303
ClientWidth = 452
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object DBGrid1: TDBGrid
Left = 8
Top = 8
Width = 320
Height = 120
DataSource = DataSource1
TabOrder = 0
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'Tahoma'
TitleFont.Style = []
end
object DBNavigator1: TDBNavigator
Left = 24
Top = 144
Width = 240
Height = 25
DataSource = DataSource1
TabOrder = 1
end
object btnRefresh: TButton
Left = 350
Top = 8
Width = 75
Height = 25
Caption = 'Refresh'
TabOrder = 2
OnClick = btnRefreshClick
end
object DBImage1: TDBImage
Left = 128
Top = 175
Width = 105
Height = 105
DataField = 'IMAGE'
DataSource = DataSource1
TabOrder = 3
end
object btnGetImage: TButton
Left = 350
Top = 64
Width = 75
Height = 25
Caption = 'GetImage'
TabOrder = 4
OnClick = btnGetImageClick
end
object SQLConnection1: TSQLConnection
DriverName = 'Firebird'
LoginPrompt = False
Params.Strings = (
'DriverUnit=Data.DBXFirebird'
'DriverPackageLoader=TDBXDynalinkDriverLoader,DbxCommonDriver180.' +
'bpl'
'DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borla' +
'nd.Data.DbxCommonDriver,Version=18.0.0.0,Culture=neutral,PublicK' +
'eyToken=91d62ebb5b0d1b1b'
'MetaDataPackageLoader=TDBXFirebirdMetaDataCommandFactory,DbxFire' +
'birdDriver180.bpl'
'MetaDataAssemblyLoader=Borland.Data.TDBXFirebirdMetaDataCommandF' +
'actory,Borland.Data.DbxFirebirdDriver,Version=18.0.0.0,Culture=n' +
'eutral,PublicKeyToken=91d62ebb5b0d1b1b'
'GetDriverFunc=getSQLDriverINTERBASE'
'LibraryName=dbxfb.dll'
'LibraryNameOsx=libsqlfb.dylib'
'VendorLib=fbclient.dll'
'VendorLibWin64=fbclient.dll'
'VendorLibOsx=/Library/Frameworks/Firebird.framework/Firebird'
'Database=d:\delphi\firebird\databases\employee.fdb'
'User_Name=sysdba'
'Password=masterkey'
'Role=RoleName'
'MaxBlobSize=-1'
'LocaleCode=0000'
'IsolationLevel=ReadCommitted'
'SQLDialect=3'
'CommitRetain=False'
'WaitOnLocks=True'
'TrimChar=False'
'BlobSize=-1'
'ErrorResourceFile='
'RoleName=RoleName'
'ServerCharSet='
'Trim Char=False')
Connected = True
Left = 40
Top = 24
end
object SQLQuery1: TSQLQuery
MaxBlobSize = 1
Params = <>
SQLConnection = SQLConnection1
Left = 112
Top = 24
end
object DataSource1: TDataSource
DataSet = CDS1
Left = 272
Top = 88
end
object CDS1: TClientDataSet
Active = True
Aggregates = <>
CommandText = 'select * from maimages'
Params = <>
ProviderName = 'DataSetProvider1'
AfterOpen = CDS1AfterOpen
OnNewRecord = CDS1NewRecord
Left = 280
Top = 24
object CDS1ID: TIntegerField
FieldName = 'ID'
Required = True
end
object CDS1NAME: TStringField
FieldName = 'NAME'
Size = 50
end
object CDS1IMAGE: TBlobField
FieldName = 'IMAGE'
Size = 1
end
end
object DataSetProvider1: TDataSetProvider
DataSet = SQLQuery1
Options = [poAllowCommandText, poUseQuoteChar]
Left = 184
Top = 24
end
object OpenDialog1: TOpenDialog
Filter = 'BMPs|*.Bmp'
Left = 400
Top = 32
end
object SQLQuery2: TSQLQuery
Active = True
MaxBlobSize = 1
Params = <>
SQL.Strings = (
'select max(ID) from maimages')
SQLConnection = SQLConnection1
Left = 16
Top = 120
end
end