⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbconn.~pas

📁 采用Delphi7+Oracle. 该软件是由交警人员对各个路口闯红灯违法照片进行有效保存
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
//--------------------------------------------------------------------------
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 + -