📄 dbconn.~pas
字号:
//--------------------------------------------------------------------------
function SavePicPhotoToDB(fullFilePath :String;PhotoXH : String): boolean; //图片保存到数据库
var
fstream : Tfilestream;
begin
try
rs:=TADODataSet.Create(nil);
rs.Connection := cn_photo;
rs.CommandText :='SELECT * FROM photocheck.P_PICPHOTO WHERE XH=''-1''';
rs.Open ;
fstream:=TFilestream.Create(FullFilePath,fmOpenRead);
fstream.Position :=0;
rs.Append ;
rs.FieldByName('xh').AsString := PhotoXH;
TBlobField(rs.FieldByName('PHOTO')).LoadFromStream(fstream);
finally
fstream.Free ;
rs.Post ;
rs.Close ;
end;
result:= true;
end;
//--------------------------------------------------------------------------
function DisplayPicPhoto(onlyID:String;photoXH:String;img1,img2,img3:TImage;Delete:String):String; //将显示照片
var
i:Integer;
serialxh:String; //照片抓拍序号
zpxh:String; //存于数据库中唯一的照片序号
tempstream:TStringStream;
tempjpeg:TJPEGImage;
begin
try
//首先通过onlyID,查询出3条记录,在分别对应img1,2,3
rs:=TADODataSet.Create(nil);
rs.Connection := cn_public;
rs.CommandText :='SELECT XH,ZPSERIAL FROM photocheck.P_PICINFO WHERE ONLYID='''+onlyID+''' AND ISDELETE=''0''';
rs.Open ;
rsPhoto:=TADODataSet.Create(nil);
rsPhoto.Connection := cn_photo;
img1.Picture := nil;
img2.Picture := nil;
img3.Picture := nil;
if Delete='1' then
begin
frmPlateCompareDelete.btnDelOne.Enabled := false;
frmPlateCompareDelete.btnDelTwo.Enabled := false;
frmPlateCompareDelete.btnDelThree.Enabled := false;
frmPlateCompareDelete.btnDelAll.Enabled := false;
end;
//frmPlateCompareDelete.btnDelAllPhoto.Enabled := false; //删除所选条件的全部照片
if not rs.Eof then
begin
for i:=0 to rs.RecordCount-1 do
begin
serialxh:=rs.Recordset.Fields[1].Value;
zpxh:=rs.Recordset.Fields[0].Value ;
try
rsPhoto.Close ;
rsPhoto.CommandText :='SELECT PHOTO FROM photocheck.P_PICPHOTO WHERE XH='''+zpxh+'''';
rsPhoto.Open ;
tempstream:=TStringStream.Create('');
tempjpeg:=TJPEGImage.Create ;
if serialxh='01' then //编号为1的
begin
//TBlobField(rsPhoto.Recordset.Fields[0].Value).SaveToStream(tempstream);
TBlobField(rsPhoto.FieldByName('PHOTO')).SaveToStream(tempstream);
tempstream.Position :=0;
tempjpeg.LoadFromStream(tempstream);
img1.Picture.Bitmap.Assign(tempjpeg);
frmPlateCompareDelete.btnDelOne.Enabled := true;
end;
if serialxh='02' then //编号为2的
begin
TBlobField(rsPhoto.FieldByName('PHOTO')).SaveToStream(tempstream);
tempstream.Position :=0;
tempjpeg.LoadFromStream(tempstream);
img2.Picture.Bitmap.Assign(tempjpeg);
frmPlateCompareDelete.btnDelTwo.Enabled := true;
end;
if serialxh='03' then //编号为3的
begin
TBlobField(rsPhoto.FieldByName('PHOTO')).SaveToStream(tempstream);
tempstream.Position :=0;
tempjpeg.LoadFromStream(tempstream);
img3.Picture.Bitmap.Assign(tempjpeg);
frmPlateCompareDelete.btnDelThree.Enabled := true;
end;
if (serialxh='01') or (serialxh='02') or (serialxh='03') then
begin
frmPlateCompareDelete.btnDelAll.Enabled := true; //只要有照片,无论为那一张,都可实现全部删除
frmPlateCompareDelete.btnDelAllPhoto.Enabled := true; //可删除全部查询条件的图片
end;
finally
tempstream.Free ;
tempjpeg.Free ;
end;
rs.Recordset.MoveNext ;
end;
end;
except
on E: EoleException do
messageBox(0,'照片错误!' ,'提示',MB_OK+MB_ICONINFORMATION );
end;
end;
//--------------------------------------------------------------------------
function CompareSaveList(sql:String):Boolean; //验证是否为保护名单车辆
begin
try
rs:=TADODataSet.Create(nil);
rs.Connection := cn_public;
rs.CommandText := sql;
rs.Open;
if rs.RecordCount>0 then
begin
result:=true;
rs.Close ;
end
else
begin
result:=false;
rs.Close ;
end;
except
on E:EoleException do
messageBox(0,'比对保护名单错误!' ,'提示',MB_OK+MB_ICONINFORMATION );
end;
end;
//--------------------------------------------------------------------------
function DeletePhotoFromDB(onlyID:String;Serial:String;img1,img2,img3:TImage):String; //删除照片操作
VAR
SerialID:String; //照片抓拍序号01,02,03
i:Integer;
serialxh:String; //照片抓拍序号
zpxh:String; //存于数据库中唯一的照片序号
tempstream:TStringStream;
tempjpeg:TJPEGImage;
delSql:String; //用于删除语句的
updSql:String; //用于更新语句的
begin
//首先通过onlyID,查询出3条记录,在分别对应img1,2,3
rs:=TADODataSet.Create(nil);
rs.Connection := cn_public;
qry:=TADOQuery.Create(nil);
qry.Connection := cn_public;
try
if (Serial='01') or (Serial='02') or (Serial='03')then
begin
//单独处理一张图片删除情况,得到唯一的照片序号xh;
rs.CommandText :='SELECT XH,ZPSERIAL FROM photocheck.P_PICINFO WHERE ONLYID='''+onlyID+''' AND ZPSERIAL='''+Serial+'''';
rs.Open ;
zpxh:=rs.Recordset.Fields[0].Value ;
rs.Close ;
qry.SQL.Clear ;
delSql:='DELETE FROM photocheck.P_PICPHOTO WHERE XH='''+zpxh+'''';
qry.SQL.Add(delSql);
qry.ExecSQL ;
updSql:='';
updSql:='UPDATE photocheck.P_PICINFO SET ISDELETE=''1'' WHERE ONLYID='''+onlyID+''' AND ZPSERIAL='''+Serial+'''';
qry.SQL.Clear ;
qry.SQL.Add(updSql);
qry.ExecSQL ;
if Serial='01' then
begin
img1.Picture:=nil;
frmPlateCompareDelete.btnDelOne.Enabled := false;
end;
if Serial='02' then
begin
img2.Picture:=nil;
frmPlateCompareDelete.btnDelTwo.Enabled := false;
end;
if Serial='03' then
begin
img3.Picture:=nil;
frmPlateCompareDelete.btnDelThree.Enabled := false;
end;
end;
//若为删除全组照片
if Serial='111' then
begin
rs.CommandText :='SELECT XH,ZPSERIAL FROM photocheck.P_PICINFO WHERE ONLYID='''+onlyID+'''';
rs.Open ;
if not rs.Eof then
begin
for i:=0 to rs.RecordCount-1 do
begin
serialxh:=rs.Recordset.Fields[1].Value ;
zpxh:=rs.Recordset.Fields[0].Value ;
qry.SQL.Clear ;
delSql:='DELETE FROM photocheck.P_PICPHOTO WHERE XH='''+zpxh+'''';
qry.SQL.Add(delSql);
qry.ExecSQL ;
if serialxh='01' then
begin
img1.Picture:=nil;
frmPlateCompareDelete.btnDelOne.Enabled := false;
end;
if serialxh='02' then
begin
img2.Picture:=nil;
frmPlateCompareDelete.btnDelTwo.Enabled := false;
end;
if serialxh='03' then
begin
img3.Picture:=nil;
frmPlateCompareDelete.btnDelThree.Enabled := false;
end;
rs.Recordset.MoveNext ; //记录集合向下移动
end;
frmPlateCompareDelete.btnDelAll.Enabled := false; //已全部删除
updSql:='';
updSql:='UPDATE photocheck.P_PICINFO SET ISDELETE=''1'' WHERE ONLYID='''+onlyID+'''';
qry.SQL.Clear ;
qry.SQL.Add(updSql);
qry.ExecSQL ;
end;
end;
rs.Close;
qry.Close;
except
on E: EoleException do
messageBox(0,'照片删除有误!' ,'提示',MB_OK+MB_ICONINFORMATION );
end;
end;
//--------------------------------------------------------------------------
function DeleteAllPhoto(selSql:String):String; //根据selSql将符合要求的图片全部删除
var
i:Integer;
serialxh,zpxh:String;
delSql,updSql:String;
begin
//首先通过onlyID,查询出3条记录,在分别对应img1,2,3
rs:=TADODataSet.Create(nil);
rs.Connection := cn_public;
qry:=TADOQuery.Create(nil);
qry.Connection := cn_public;
try
rs.CommandText :=selSql;
rs.Open ;
if not rs.Eof then
begin
for i:=0 to rs.RecordCount-1 do
begin
serialxh:=rs.Recordset.Fields[1].Value ;
zpxh:=rs.Recordset.Fields[0].Value ;
qry.SQL.Clear ;
delSql:='DELETE FROM photocheck.P_PICPHOTO WHERE XH='''+zpxh+'''';
qry.SQL.Add(delSql);
qry.ExecSQL ;
updSql:='';
updSql:='UPDATE photocheck.P_PICINFO SET ISDELETE=''1'' WHERE XH='''+zpxh+'''';
qry.SQL.Clear ;
qry.SQL.Add(updSql);
qry.ExecSQL ;
rs.Recordset.MoveNext ; //记录集合向下移动
end;
end;
rs.Close;
qry.Close;
except
on E: EoleException do
messageBox(0,'照片删除有误!' ,'提示',MB_OK+MB_ICONINFORMATION );
end;
end;
//--------------------------------------------------------------------------
function ExportPhotoFromDB(onlyID:String;selSql:String;savePath:String):Boolean; //将照片导出
var
i:Integer;
FileName:String;
tempstream:TStringStream;
WholeSavePath:String;
zpxh:String;
begin
IF selSql='' then
begin
rs:=TADODataSet.Create(nil);
rs.Connection := cn_public;
rsPhoto:=TADODataSet.Create(nil);
rsPhoto.Connection := cn_photo;
rs.CommandText :='SELECT XH,WHOLENAME FROM photocheck.P_PICINFO WHERE ONLYID='''+onlyID+''' AND ISDELETE=''0''';
rs.Open ;
for i:=0 to rs.RecordCount-1 do
begin
zpxh:=rs.Recordset.Fields[0].Value ;
FileName:=rs.Recordset.Fields[1].Value ;
rsPhoto.CommandText :='SELECT PHOTO FROM photocheck.P_PICPHOTO WHERE XH='''+zpxh+'''';
rsPhoto.Open ;
if rsPhoto.RecordCount >0 then
begin
try
WholeSavePath:=savePath+'\'+FileName;
tempstream:=TStringStream.Create('');
TBlobField(rsPhoto.FieldByName('PHOTO')).SaveToFile(WholeSavePath);
finally
tempstream.Free;
End;
end;
rsPhoto.Close ;
rs.Recordset.MoveNext ;
end;
result:=true;
end; //以上专门针对于当前组的照片
IF onlyID='' then //主要根据查询条件进行保存
begin
rs:=TADODataSet.Create(nil);
rs.Connection := cn_public;
rsPhoto:=TADODataSet.Create(nil);
rsPhoto.Connection := cn_photo;
rs.CommandText :=selSql;
rs.Open ;
for i:=0 to rs.RecordCount-1 do
begin
zpxh:=rs.Recordset.Fields[0].Value ;
FileName:=rs.Recordset.Fields[1].Value ;
rsPhoto.CommandText :='SELECT PHOTO FROM photocheck.P_PICPHOTO WHERE XH='''+zpxh+'''';
rsPhoto.Open ;
if rsPhoto.RecordCount >0 then
begin
try
WholeSavePath:=savePath+'\'+FileName;
tempstream:=TStringStream.Create('');
TBlobField(rsPhoto.FieldByName('PHOTO')).SaveToFile(WholeSavePath);
finally
tempstream.Free;
End;
end;
rsPhoto.Close ;
rs.Recordset.MoveNext ;
end;
result:=true;
end;
end;
//--------------------------------------------------------------------------
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -