亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? database.pas

?? SQL 分析相關代碼,SQL 腳本分析相關代碼
?? PAS
?? 第 1 頁 / 共 4 頁
字號:
unit DataBase;


interface
  uses sysutils,Windows,pub,Classes,db,math, Graphics,printers,StdCtrls,Dialogs,ADODB,forms,inifiles,Controls,XMLDoc, XMLIntf;

  function OpenConn(ADOConn: TADOConnection;const AReConnect:boolean=false;Const ANewDBName:string =''):boolean;//開始連接數(shù)據(jù)庫,成功返回true,否則返回失敗

  function GetObjectType(Atext:string):  TTreeHitType;

  function GetDataBase(ADOConn: TADOConnection):TStrings;//返回所有數(shù)據(jù)庫名稱

  function GetObjects(ADOConn: TADOConnection;const ADBName:string;const AObjectType:string):TStrings;

  function CreateDataBaseDL(ADOConn: TADOConnection ;ACombobox:Tcombobox):boolean; //返回數(shù)據(jù)庫名稱

  function CreateTableViewDL(ADOConn: TADOConnection;
        const ADBName:string;const AObjectType:string;ACombobox:Tcombobox):boolean;

  function GetTableDef(ADOConn: TADOConnection;Const ATableName:string;
      var ATableInfo: TTableInfo;
      const fk_index:bool=false //是否返回外鍵和索引信息
      ):boolean;//返回表/試圖的結構 ;結果在ATableInfo中

  function GetTableRecordCount(ADOConn: TADOConnection;Const ATableName:string;
       Const Atop:integer;//-1 表示全部
     const AWhere:string;out Count:integer):string;
  //得到表中的記錄數(shù)量 返回錯誤信息

  function GetDataSetDef(ADOConn: TADOConnection;Const ASQL:string;
      var ATableInfo: TTableInfo):boolean; overload;//以字符串返回DS結構;結果在ATableInfo中

  function GetDataSetDef(ADOConn: TADOConnection;ATSP_Info:TSP_Info;
      var ATableInfo: TTableInfo):boolean; overload;//以字符串返回DS結構;結果在ATableInfo中


  function GetSPParameters(ADOConn: TADOConnection;Const ASPName:string;
      var ATSP_Info:  TSP_Info):boolean;
      //返回存儲過程參數(shù),結果存在 ATSP_Parameters

  function SQLDataToCDataType(Const ASQLDataType:string):string; //將來數(shù)據(jù)庫類型轉換成C#類型

  function FieldTypeToCDataType(Const AFieldType:TFieldType):string;
   //將來執(zhí)行SQL語句返回的字段類型轉換成C#類型


  function ExeSQL(ADOConn: TADOConnection;Const ASQL:string):string;
    //執(zhí)行SQL,返回錯誤;如果沒有錯誤,則返回空

  function GetViewScript(ADOConn: TADOConnection;
    const AViewName:string):string;
    //返回視圖的腳本

  function GetViewComments(ADOConn: TADOConnection;
    const AViewName:string):string;
    //返回視圖的SQL備注

  function GetSPScript(ADOConn: TADOConnection; const ASPName:string):string;
    //返回存儲過程腳本

  function ObjectExists(ADOConn: TADOConnection;const ObjectNAme:string):boolean;
  function RemoveRemark(SQLStr:String):string;// 祛除SQL中的備注
  procedure AnalysisViewScript(const ASQLStr:String;
        out  ATables:string;out AViewFields:TCodeValueList); // )
        //ATables 返回與視圖相關的表 ,以逗號隔開
        //ViewFields返回 視圖字段
          //Code 為視圖字段別名
        //Value為實際的字段名,TableName.Fieldname的形式
  function GetNullExpression(Const CDataType :string):string;

  function GetTableNameByRefOrder(ADOConn: TADOConnection;const ADBName:string):TStrings;//按得到表名稱按引用的順序,用于生成插入表數(shù)據(jù)

  function GetReferences(ADOConn: TADOConnection;const ADBName:string):TCodeValueList ;
  //得到引用關系,用于排插入順序

  function GetSQLDataTypes(ADOConn: TADOConnection;out ADataTypes:TCodeValueList):Boolean;//
  //code 是類型,包括字定義類型 value是 原始類型

implementation

uses UDbConnSetting,  Unit_des;


   function FieldTypeToSQLDataType(Const AFieldType:TFieldType):string;
   //將來執(zhí)行SQL語句返回的字段類型轉換成SQL Server類型
   begin
    case  AFieldType of
     ftLargeint: result:='bigint';
     ftBytes: result:='binary';
     ftBoolean: result:='bit';
     //ftString: result:='char';
     ftDateTime: result:='datetime';
     ftBCD: result:='decimal';
     ftFloat: result:='float';
     ftBlob: result:='image';
     ftInteger: result:='int';
     //ftBCD: result:='money';
    // ftWideString: result:='nchar';
     ftMemo: result:='ntext';
    // ftBCD: result:='numeric';
     ftWideString: result:='nvarchar';
    // ftFloat: result:='real';
   //  ftDateTime: result:='smalldatetime';
     ftSmallint: result:='smallint';
     //ftBCD: result:='smallmoney';
     //ftMemo: result:='text';
     //ftBytes: result:='timestamp';
     ftWord: result:='tinyint';
     ftGuid: result:='uniqueidentifier';
     ftVarBytes: result:='varbinary';
     ftString: result:='varchar';
     end;

   end;

//********************
function GetObjectType(Atext:string): TTreeHitType;
var   XType:string;
      P:integer;
begin
           Xtype:=trim(Atext) ;
           P:=pos('.', Xtype);
           Xtype:=copy(Xtype,p+1,length(Xtype));
 
           if Xtype='用戶表' then Result:=pub.tShowTable
            else
            if Xtype='視圖' then Result:=pub.tShowView
            else
            if Xtype='存儲過程' then Result:=pub.tShowSP


end;


function TryOpenConn(ADOConn: TADOConnection):boolean;//開始連接數(shù)據(jù)庫,成功返回true,否則返回失敗
  begin
     try
       ADOConn.Open ;
       result:=true;
       exit;
    except
      result:=false;
    end;
  end;
function SettingConnectionString:string;//通過設置窗口得到連接串
   begin
    with TfrmDbConnSetting.Create(nil) do
    try
     if ShowModal=mrOk then
        result:=  DBConnSetting;

    finally
      free;
    end;
   end;
function OpenConn(ADOConn: TADOConnection;const AReConnect:boolean=false;Const ANewDBName:string =''):boolean;//開始連接數(shù)據(jù)庫,成功返回true,否則返回失敗
var FileName:string;
    TmpStr:string;
      SvrAddress:string;
      Integrated:boolean;
      UID:string;
      pwd:String;
     // DBName:string ;
   
begin
 result:=false;

if AReConnect then
   begin
      ADOConn.Close;
      ADOConn.ConnectionString :='';
   end;

 if ADOConn.Connected then
  begin
    result:=true;
    exit;
  end;

  if ADOConn.ConnectionString <>'' then  //有連接串,嘗試打開
     result:=TryOpenConn(ADOConn);
   if result then exit;
    ///////////////////////////////////////
 
  Filename:=ExtractFileDir(Application.ExeName) + '\conn.ini';
  if FileExists(Filename) then//看是否有保存的
   with TIniFile.Create(Filename) do
   try
    begin
       SvrAddress:=ReadString('Parameters','ServerName','');
       TmpStr :=ReadString('Parameters','LoginType','');
       Integrated:= TmpStr='1';

       UID:=ReadString('Parameters','UID','');

       TmpStr:= ReadString('Parameters','SaveSetting','');

    if TmpStr='1' then  //保存密碼
      begin
        TmpStr :=ReadString('Parameters','Pwd','');
        pwd :=Unit_des.DESryStrHex(TmpStr,pub.DESKey);
        ADOConn.ConnectionString :=pub.BuildConnstring(SvrAddress,Integrated,UID,pwd,ANewDBName);
      end
      else
          ADOConn.ConnectionString :=SettingConnectionString;
 
    end;//if FileExists(Filename) then//看是否有保存的
    finally
      free;
    end
      else
         ADOConn.ConnectionString :=SettingConnectionString;

//***********************
  if ADOConn.ConnectionString <>'' then  //有連接串,嘗試打開
     result:=TryOpenConn(ADOConn)
     else
     result:=false;

end;
//AObjectType:U,V,P
function GetObjects(ADOConn: TADOConnection;const ADBName:string;const AObjectType:string):TStrings;
begin
result:=TStringList.Create ;
    with TADOQuery.Create(nil) do
          try
            Connection :=ADOConn;
            if Database.OpenConn(ADOConn,true,ADBName) then
             begin

               SQL.Text :='select   owner = user_name(uid), name  from  '+ADBName+'.dbo.sysobjects o where type=N'''+AObjectType
                 +'''  and ISNULL(OBJECTPROPERTY(o.id, N''IsMSShipped''), 1)=0 and name<>''dtproperties'' and name<>''sysdiagrams'' order by name';
               Open ;
               while not Eof do
                begin
                 result.Add(FieldByName('owner').AsString+'.'+ FieldByName('name').AsString + '');
                 Next;
               end;

            end//if(Database.OpenConn(ADOConn) then
            finally
             free;
            end;

end;

function GetDataBase(ADOConn: TADOConnection):TStrings;//返回所有數(shù)據(jù)庫名稱
 begin
     result:=TStringList.Create ;
     with TADOQuery.Create(nil) do
          try
            Connection :=ADOConn;
            if Database.OpenConn(ADOConn) then
             begin
              SQL.Text :='select * from master.dbo.sysdatabases where name not in(''master'',''model'',''msdb'',''tempdb'') order by name';
              Open ;
              while not Eof do
               begin
                result.Add(Fields[0].AsString);
                Next;
               end;
            end//if(Database.OpenConn(ADOConn) then

          finally
            free;
          end;
 end;

function CreateDataBaseDL(ADOConn: TADOConnection ;ACombobox:Tcombobox):boolean; //返回數(shù)據(jù)庫名稱
  begin
  try
     ACombobox.Items:=GetDataBase(ADOConn);
     result:=true;
     except
     result:=false;
     end;
  end;

function CreateTableViewDL(ADOConn: TADOConnection;
        const ADBName:string;const AObjectType:string;
        ACombobox:Tcombobox):boolean;
        begin
        try
           ACombobox.Items :=DataBAse.GetObjects(ADOConn,ADBName,AObjectType);
           result:=true;
          except
           result:=false;
          end;
        end;
 //
 function GetCommentsByFullFieldName(ADOConn: TADOConnection;
 const AFullFieldName:string):string;
 //得到字段的備注 AFullFieldName至少需要包括表名和字段名稱owner.tablename.fieldname/tablename.fieldname
 var TS:TStrings;
     SQLStr:string;
     OwnerName:string;
     TableName:string;
     FieldName:string;
     I:integer;
 begin
  TS:=pub.SplitString(AFullFieldName,'.');
  for I:=0 to TS.Count -1 do
    if trim(TS[I]) ='' then
      TS.Delete(I); 
  result:='';

  try
  if TS.Count<=1 then exit;//沒有表名稱
  if TS.Count = 2 then  //tablename.fieldname
    begin
      OwnerName:= 'dbo';
      TableName:=TS[0];
      FieldName:=TS[1];
    end else //>=3
      begin
          OwnerName:=TS[TS.count-3];;
          TableName:=TS[TS.count-2];
          FieldName:=TS[TS.count-1];

      end;

      SQLStr:='select   cast(xp.[value] as nvarchar(4000)) from ::::fn_listextendedproperty '
                       + ' (NULL, N''user'', N'''+OwnerName+''', N''table'', N'''+TableName+''', N''column'', N''' +
                       FieldName
                       +''') xp where xp.name'
                       +' = N''MS_Description''';
       with TADOQuery.Create(nil) do
          try
            Connection :=ADOConn;
            if Database.OpenConn(ADOConn) then
             begin
                 SQL.Text :=SQLStr;
                 open;
                 if Recordcount>0 then
                   result:=Fields[0].AsString ;
                 //**************
                 Close;
             end;
           finally
             free;
           end;
  finally
    TS.Free ;
  end;
 end;
 //***********************************
 function GetCommentsFromTables(ADOConn: TADOConnection;
          const AFieldName:string;const ATables:string):string;
 //從表中得到字段的備注
 //多個表用逗號隔開
 var TS:TStrings;
     SQLStr:string;
     OwnerName:string;
     TableName:string;
     FieldName:string;
     I:integer;
     P:integer;
 begin
  TS:=pub.SplitString(ATables,',');
  for I:=0 to TS.Count -1 do
    if trim(TS[I]) ='' then
      TS.Delete(I); 
  result:='';

  try
  if TS.Count=0 then exit;//列表中沒有表名稱
      OwnerName:='';
      FieldName:=AFieldName;

       with TADOQuery.Create(nil) do
          try
            Connection :=ADOConn;
            if Database.OpenConn(ADOConn) then
             begin
               for I:=0 to TS.Count -1 do
                begin

                  TableName:=TS[i];
                  P:=pos('.', TableName);
                  if P<>0 then
                    begin
                      OwnerName:=copy(TableName,1,P-1);
                      if OwnerName='' then

                      TableName:=copy(TableName,P+1,length(TableName));
                    end;

                   OwnerName:='dbo'; //20070329  

                  SQLStr:='select   cast(xp.[value] as nvarchar(4000)) from ::::fn_listextendedproperty '
                       + ' (NULL, N''user'', N'''+OwnerName+''', N''table'', N'''+TableName+''', N''column'', N''' +
                       FieldName
                       +''') xp where xp.name'
                       +' = N''MS_Description''';
                 Close;
                 SQL.Text :=SQLStr;
                 open;
                 if Recordcount>0 then
                  begin
                   result:=Fields[0].AsString ;
                   break;//找到了,跳出去
                  end;
                 //**************
                 Close;
                end; 
             end;
           finally
             free;
           end;
  finally
    TS.Free ;
  end;
 end;


 function IsField(const AFieldName:string):boolean;
 //判斷視圖字段是否來自一個實際的字段
 //排除 數(shù)字,字符串,函數(shù),@@,帶操作符的
 var  F:Extended;//臨時變量
      B:boolean;
      j:integer;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩三区在线观看| 国产成+人+日韩+欧美+亚洲| 国产精品免费久久久久| 国产亚洲一区二区三区| 国产蜜臀av在线一区二区三区| 日韩天堂在线观看| 精品国产一二三| 久久精品欧美日韩| 国产精品视频线看| 欧美日韩国产精品成人| 欧美一区二区三区视频免费| 欧美一级片在线| 一色桃子久久精品亚洲| 一区二区国产盗摄色噜噜| 亚洲精品午夜久久久| 青青草国产成人99久久| 99在线精品一区二区三区| 蜜臀91精品一区二区三区| 成人黄色一级视频| 国产成人亚洲综合a∨猫咪| 成人av电影免费观看| 亚洲精品一区二区三区福利| 日本视频在线一区| 欧美疯狂做受xxxx富婆| 亚洲制服欧美中文字幕中文字幕| 国产高清在线精品| 久久久久国产精品厨房| 日韩高清中文字幕一区| 欧美专区在线观看一区| 亚洲影院理伦片| 色乱码一区二区三区88| 亚洲理论在线观看| 在线观看一区二区精品视频| 国产精品网站在线观看| 国产福利一区在线观看| 国产亚洲精品超碰| 成a人片国产精品| 国产精品成人网| 91国产视频在线观看| 图片区小说区区亚洲影院| 欧美喷水一区二区| 激情文学综合插| 国产午夜精品久久| 96av麻豆蜜桃一区二区| 亚洲精品乱码久久久久久久久| 欧美日韩国产精品自在自线| 91精品国产福利| 粉嫩绯色av一区二区在线观看| 一区二区三区四区中文字幕| 不卡在线视频中文字幕| 国产亚洲一本大道中文在线| 波多野结衣在线一区| 国产精品入口麻豆原神| 99热在这里有精品免费| 亚洲一区二区三区在线播放| 久久久久久久性| 91福利在线免费观看| 国产精品91xxx| 亚洲午夜免费福利视频| 精品日本一线二线三线不卡| 欧美无乱码久久久免费午夜一区| 国产在线一区观看| 韩国一区二区在线观看| 亚洲三级久久久| 欧美性xxxxx极品少妇| 久久精品国产精品亚洲综合| 欧美电影免费观看完整版| 麻豆一区二区在线| 亚洲精品国产高清久久伦理二区| 亚洲国产成人一区二区三区| 亚洲国产精品黑人久久久| 欧美日韩一卡二卡三卡| 国产一区二区免费看| 久久综合久久综合九色| 韩国视频一区二区| 久久久精品2019中文字幕之3| 国产综合久久久久久久久久久久| 欧美日韩免费观看一区二区三区 | 欧美亚一区二区| 成人黄页毛片网站| 成人永久免费视频| 国产成人超碰人人澡人人澡| 黑人精品欧美一区二区蜜桃 | 国产亚洲一区二区三区四区| 亚洲精品一区二区三区影院 | 亚洲精品久久久蜜桃| 亚洲视频一二区| 椎名由奈av一区二区三区| ...av二区三区久久精品| 亚洲欧洲国产日韩| 最近日韩中文字幕| 97精品视频在线观看自产线路二| 国产成人精品aa毛片| 国产高清在线观看免费不卡| 国产a精品视频| 高清不卡一区二区| 成人免费观看视频| 风间由美一区二区av101| www.综合网.com| 一本大道av伊人久久综合| 99re成人精品视频| 欧美视频中文字幕| 欧美一区二区三区的| 欧美成人a视频| 国产女同互慰高潮91漫画| 中文字幕一区免费在线观看| 一区二区三区影院| 日本一道高清亚洲日美韩| 蜜桃精品在线观看| 丁香婷婷综合网| 在线国产亚洲欧美| 欧美一区二区三区视频| 国产午夜亚洲精品不卡 | 一色桃子久久精品亚洲| 亚洲一区在线视频观看| 麻豆成人久久精品二区三区红| 国产丶欧美丶日本不卡视频| 色综合天天综合网天天狠天天| 欧美日本精品一区二区三区| 久久久99精品免费观看| 一级特黄大欧美久久久| 国产伦精品一区二区三区免费迷| 色欧美片视频在线观看| 欧美精品一区二区精品网| 玉足女爽爽91| 国产伦精品一区二区三区视频青涩| 日本韩国欧美一区二区三区| 欧美大片拔萝卜| 亚洲激情自拍偷拍| 国产iv一区二区三区| 91精品国产欧美一区二区| 中文字幕一区二区三| 麻豆国产精品777777在线| 91在线码无精品| 亚洲精品在线三区| 亚洲一二三区在线观看| 国产精品综合网| 欧美日韩美少妇| 亚洲桃色在线一区| 国产成人综合视频| 欧美一区二区美女| 洋洋成人永久网站入口| 国产精品亚洲第一区在线暖暖韩国| 在线免费不卡电影| 国产精品色噜噜| 激情文学综合丁香| 538在线一区二区精品国产| 亚洲视频一区二区免费在线观看| 国产资源在线一区| 制服丝袜在线91| 综合中文字幕亚洲| 国产精品18久久久久久久久久久久| 7777精品伊人久久久大香线蕉的| 亚洲免费资源在线播放| 99天天综合性| 日本一区二区三区电影| 久久狠狠亚洲综合| 日韩视频国产视频| 三级不卡在线观看| 91国偷自产一区二区三区观看 | 亚洲另类在线一区| 国产精品一区二区无线| 日韩欧美的一区| 秋霞午夜鲁丝一区二区老狼| 欧美三级中文字幕在线观看| 亚洲永久免费视频| 一本大道综合伊人精品热热| 亚洲欧美激情视频在线观看一区二区三区 | 欧日韩精品视频| 亚洲影院在线观看| 欧洲人成人精品| 亚洲综合精品久久| 欧美视频日韩视频在线观看| 亚洲国产美女搞黄色| 欧美日韩免费观看一区二区三区| 香蕉影视欧美成人| 91精品久久久久久久99蜜桃| 老司机精品视频导航| 欧美成人性战久久| 国产成人a级片| 亚洲国产精品成人久久综合一区| 暴力调教一区二区三区| 亚洲欧美激情视频在线观看一区二区三区 | 国产成人精品午夜视频免费| 久久综合国产精品| 成人av免费观看| 一区二区三区 在线观看视频| 欧美羞羞免费网站| 日韩成人午夜精品| 2024国产精品视频| a亚洲天堂av| 午夜久久久久久久久久一区二区| 4438x亚洲最大成人网| 美女脱光内衣内裤视频久久网站| 久久久久国产精品厨房| 色综合天天做天天爱| 视频一区中文字幕| 久久久精品人体av艺术| 91麻豆免费观看| 日本三级韩国三级欧美三级|