全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1033
推到 Plurk!
推到 Facebook!

如何用WinApi来判断ODBC数据配置中是否存在一个名字为“My_SQl”的数

尚未結案
railgunman
初階會員


發表:59
回覆:121
積分:36
註冊:2003-03-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-05 09:55:08 IP:218.88.xxx.xxx 未訂閱
如何用WinApi来判断ODBC数据配置中是否存在一个名字为“My_SQl”的数据源?? 其中"My_SQL"为一个连接SQL SERVER的数据塬?如何判断名字为"My_SQL"的数据源是否存在呢?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-05 16:52:52 IP:202.39.xxx.xxx 未訂閱
在網路上找了一下, 都是從 registry 下手, 如下:
uses 
  Registry;     procedure TForm1.GetDSNs(System: Boolean; AList: TStrings); 
var 
  reg: TRegistry; 
begin 
  reg := TRegistry.Create; 
  try 
    if System then 
      reg.RootKey := HKEY_LOCAL_MACHINE 
    else 
      reg.RootKey := HKEY_CURRENT_USER;         if reg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', False) then 
    begin 
      reg.GetValueNames(AList); 
    end;       finally 
    reg.CloseKey; 
    FreeAndNil(reg); 
  end; 
end;     procedure TForm1.Button1Click(Sender: TObject); 
begin 
  ListBox1.Clear;      //System DSNs 
  GetDataSourceNames(True, ListBox1.Items); 
  //User DSNs 
  GetDataSourceNames(False, ListBox1.Items);       if ListBox1.Items.IndexOf('My_SQL') = -1 then
    ShowMessage('My_SQL ODBC DSN 不存在');
end; 
--- 歡迎光臨 KTop 研究院
railgunman
初階會員


發表:59
回覆:121
積分:36
註冊:2003-03-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-06 08:46:20 IP:218.88.xxx.xxx 未訂閱
可以通过Api函数来实现吗?
railgunman
初階會員


發表:59
回覆:121
積分:36
註冊:2003-03-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-06 08:46:43 IP:218.88.xxx.xxx 未訂閱
谢谢,不知道能不能通过Api函数来实现吗?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-06 09:36:33 IP:202.39.xxx.xxx 未訂閱
對 ODBC32.DLL 的 function 有興趣的話 Demian Lessa 在底下這有他的大作可參考: http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=594&lngWId=7    --- 歡迎光臨 KTop 研究院
railgunman
初階會員


發表:59
回覆:121
積分:36
註冊:2003-03-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-06 11:22:42 IP:218.88.xxx.xxx 未訂閱
谢谢,不过,我看了,里面好复杂哦!!
japhenchen
高階會員


發表:51
回覆:444
積分:184
註冊:2003-07-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-03 18:49:58 IP:211.96.xxx.xxx 未訂閱
簡化如下
VAR 
  FORM1:TForm1;
  function SQLConfigDataSource(hwndParent: HWND;
    fRequest: Word;
    lpszDriver: PChar;
    lpszAttributes: PChar): boolean; stdcall;
    external 'ODBCCP32.DLL';    implementation
{$R *.DFM}    procedure TForm1.FormCreate(Sender: TObject);
const
    ODBC_ADD_DSN = 1;
    ODBC_CONFIG_DSN = 2;
    ODBC_REMOVE_DSN = 3;
    ODBC_ADD_SYS_DSN = 4;
    ODBC_CONFIG_SYS_DSN = 5;
    ODBC_REMOVE_SYS_DSN = 6;
VAR Attributes: string;
    DRIVER:STRING;
begin
      Driver := 'SQL Server';
      Attributes := 'DSN=CYBERDB' #0 
                    'DATABASE=CounterDB' #0 
                    'Network=DBMSSOCN' #0 
                    'SERVER=10.10.1.5' #0 
                    'Description=cyberdb';             SQLConfigDataSource(0, ODBC_REMOVE_SYS_DSN, PChar(Driver), PChar(Attributes));
         SQLConfigDataSource(0, ODBC_REMOVE_DSN, PChar(Driver), PChar(Attributes));
         if NOT SQLConfigDataSource(0, ODBC_ADD_DSN, PChar(Driver), PChar(Attributes)) then
            MessageDlg('ODBC DSN FALSE!', mtWarning, [mbOk], 0);
   end;
end;    
我不懂,不懂,不懂....所以我才來ktop學工夫
daybreak
一般會員


發表:14
回覆:15
積分:5
註冊:2003-11-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-11-05 17:07:30 IP:202.110.xxx.xxx 未訂閱
function SQLCreateDataSource(hwndParent: HWND; lpszAttributes: PChar): boolean; stdcall; external 'ODBCCP32.DLL'; function SQLManageDataSources(hwndParent: HWND): boolean; stdcall; external 'ODBCCP32.DLL'; 其他的幾個相關函數,可查MSDN
系統時間:2024-05-10 5:36:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!