fmDataModVod.ClientDatSetMovie.First;
if image1.Picture.Graphic<>nil then //把img里的图片用流形式保存到数据库
begin
if not fmDataModVod.SQLConnVod.InTransaction then
begin
TD.TransactionID := 1;
TD.IsolationLevel := xilREADCOMMITTED;
fmDataModVod.SQLConnVod.StartTransaction(TD); //这句出错
try
fmDataModVod.ClientDatSetMovie.Edit;
str:=Tmemorystream.Create;
image1.Picture.Graphic.SaveToStream(str);
str.Position:=0;
Tblobfield(fmDataModVod.ClientDatSetMovie.FieldByName('pic')).loadfromstream(str);
fmDataModVod.ClientDatSetMovie.Post;
fmDataModVod.ClientDatSetMovie.ApplyUpdates(0);
fmDataModVod.SQLConnVod.Commit(TD);
str.Free;
except
fmDataModVod.SQLConnVod.Rollback(TD);
raise;
end;
end;
end
else
begin
fmDataModVod.ClientDatSetMovie.FieldByName('pic').value:=null;
end;出错信息如下:
Project Project1.exe raised exception class EDatabaseError with message'. Cannot create new transaction because capacity was exceeded.'. Process stopped. Use Step or Run to continue.谁来帮我看看,分析一下。
if image1.Picture.Graphic<>nil then //把img里的图片用流形式保存到数据库
begin
if not fmDataModVod.SQLConnVod.InTransaction then
begin
TD.TransactionID := 1;
TD.IsolationLevel := xilREADCOMMITTED;
fmDataModVod.SQLConnVod.StartTransaction(TD); //这句出错
try
fmDataModVod.ClientDatSetMovie.Edit;
str:=Tmemorystream.Create;
image1.Picture.Graphic.SaveToStream(str);
str.Position:=0;
Tblobfield(fmDataModVod.ClientDatSetMovie.FieldByName('pic')).loadfromstream(str);
fmDataModVod.ClientDatSetMovie.Post;
fmDataModVod.ClientDatSetMovie.ApplyUpdates(0);
fmDataModVod.SQLConnVod.Commit(TD);
str.Free;
except
fmDataModVod.SQLConnVod.Rollback(TD);
raise;
end;
end;
end
else
begin
fmDataModVod.ClientDatSetMovie.FieldByName('pic').value:=null;
end;出错信息如下:
Project Project1.exe raised exception class EDatabaseError with message'. Cannot create new transaction because capacity was exceeded.'. Process stopped. Use Step or Run to continue.谁来帮我看看,分析一下。
代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables;
type
TForm1 = class(TForm)
Database1: TDatabase;
Query1: TQuery;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
No : Integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
S : TStream;
begin
S := TFileStream.Create('C:\WINDOWS\DESKTOP\设备描述表(中).xls', fmOpenRead);
try
Inc(No);
with Query1 do
begin
SQL.Text := 'INSERT INTO TEST(A, B) VALUES(:A, :B)';
ParamByName('A').AsInteger := No;
ParamByName('B').LoadFromStream(S, ftBlob);
ExecSQL;
end;
finally
S.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
with Query1 do
begin
SQL.Text := 'SELECT A, B FROM TEST';
Open;
TBlobField(FieldByName('B')).SaveToFile('C:\WINDOWS\DESKTOP\设备描述表(中)11.xls');
Close;
end;
end;
end.