程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 動態連接數據庫及動態建立ODBC,DSN(ZT)

動態連接數據庫及動態建立ODBC,DSN(ZT)

編輯:Delphi
動態連接數

  在ODBC數據源裡配置數據庫,通過這種方式,應用程序的編寫變的簡單。只需要在應用程序裡面指定已經配置好的數據源就可以連接,訪問數據庫。但是,這種方式也有一定的局限性,需要手工的在ODBC數據源裡面配置。需要教會程序的使用者如何去配置,而且,如果一不小心更改了ODBC數據源的配置(也許是無意的)。就會造成連接數據庫失敗。這時候,程序的使用人員也許會一籌莫展,束手無策。
  在form或Data Modules上放置Tdatabase控件,屬性設置如下:
    object dbWork: TDatabase
      DatabaseName = 'work'
      LoginPrompt = False
      SessionName = 'Default'
      TransIsolation = tiDirtyRead
      Left = 32
      Top = 16
    End

  1)Paradox數據庫的連接

    dbWork.Connected    := False
    dbWork.DriverName   :='STANDARD';
    dbWork.Params.Values['PATH']  := ‘d:/data’; //填寫數據庫路徑
    dbWork.Connected    := True;

   2)Informix數據庫的連接(BDE連接)

    dbWork.Connected    := False
    dbWork.DriverName  := 'informix';
    dbWork.Params.Values['SERVER NAME'] := sServer ;//數據庫服務器名稱
    dbWork.Params.Values['USER NAME'] := sUse ;//用戶名稱
    dbWork.Params.Values['DATABASE NAME'] := ‘sysmaster;//數據庫名稱
    dbWork.Params.Values['PASSWord'] := sPass ;//用戶密碼
    dbWork.Connected:=True;

  3) SQL Server數據庫的連接(與informix一樣)

    dbWork.Connected    := False
    dbWork.DriverName  := 'MSSQL';
    dbWork.Params.Values['SERVER NAME'] := sServer ;//數據庫服務器名稱
    dbWork.Params.Values['USER NAME'] := sUse ;//用戶名稱
     dbWork.Params.Values['DATABASE NAME'] := ‘master;//數據庫名稱
     dbWork.Params.Values['PASSWord'] := sPass ;//用戶密碼
    dbWork.Connected:=True;

  4)Postgrd SQL數據庫的連接(ODBC連接)

    dbWork.Connected    := False
    dbWork.DriverName  := 'PostgreSQL';
   dbWork.Params.Values['ODBC DSN'] := 'PgSQL';/ /數據源名稱
    dbWork.Params.Values['SERVER NAME'] := sServer ;//數據庫服務器名稱
    dbWork.Params.Values['USER NAME'] := sUse ;//用戶名稱
    dbWork.Params.Values['DATABASE NAME'] := ‘master;//數據庫名稱
    dbWork.Params.Values['PASSWord'] := sPass ;//用戶密碼
    dbWork.Connected:=True;

   PS:ODBC連接時,請保證odbc驅動安裝正確;並且有設置odbc;

  附自動設置odbc代碼:

  // sDriName 驅動程序名 (PostgreSQL)

  // sDsnName 數據源名

  function CreateDSN(sDriName,sDsnName:string): boolean;

  var

    regTmp: TRegistry;

    sTmp: String;

  begin

    Result:= True;

    regTmp:= TRegistry.Create;

    try

      with regTmp do

      begin

        RootKey:= HKEY_LOCAL_MacHINE;

        if openkey('softwareODBCODBCINST.INI'+sDriName,false) then

        begin

          sTmp:= ReadString('driver');

          if sTmp = '' then

          begin

            result:= false;

            exit;

          end;

        end

        else

        begin

          result:= false;

          exit;

        end;
        CloseKey;

        RootKey:= HKEY_CURRENT_USER;

        if openkey('softwareODBCODBC.INIODBC Data Sources',True) then

        begin

          if not ValueExists(sDsnName) then

            WriteString(sDsnName,sDriName);
        end

        else

        begin

          result:= false;

          exit;

        end;

        CloseKey;

        if openkey('softwareODBCODBC.INI'+sDsnName,True) then

        begin

          if not ValueExists('ServerName') then

            writeString('ServerName','');

          if not ValueExists('DataBase') then

            writeString('DataBase','');

          if not ValueExists('UserName') then

            writeString('UserName','');

          if not ValueExists('PassWord') then

            writeString('PassWord','');

          if not ValueExists('Description') then

            writeString('Description','DoWhat Create');

          if not ValueExists('driver') then

            writeString('driver',sTmp);

        end

        else

        begin

          result:= false;

          exit;

        end;

      end;

    finally

      regTmp.CloseKey;

    end;

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved