lluxury 发表于 2011-5-13 16:39:54

au3 如何连接DB2

跑到国外找来代码如下,总报DB2 CLI0199E,我在想是不是有什么软件要装,环境xp裸机,只装了个db2








; Initialize COM error handler
Global $oMyError = ObjEvent('AutoIt.Error', 'MyErrFunc')

Global $provider = 'IBMDADB2'
Global $IP = '10.64.80.4'
Global $port = 50000
Global $DSN = 'DSNE'
Global $userID = 'xf01145'
Global $password = 'test1234'

Global $Obj = _connectDB2($provider, $IP, $port, $DSN, $userID, $password)
_printDB2Recordset($Obj, "SELECT * FROM B10TMCP.KENNZAHL_GRUPPEN WHERE SL_GRUPPE_KENNZAHL='BTRK'")

Func _connectDB2($provider, $IP, $port, $DSN, $userID, $password)
    Local $sqlCon = ObjCreate('ADODB.Connection')
    $sqlCon.Mode = 16 ; Erlaubt im MultiUser-Bereich das öffnen anderer Verbindungen ohne Beschränkungen
    $sqlCon.CursorLocation = 3 ; client side cursor Schreiben beim Clienten

    $sqlCon.Open('Provider=' & $provider & ';IP=' & $IP & ';Port=' & $port & ';DSN=' & $DSN & ';User ID=' & $userID & ';Password=' & $password)
    If @error Then Return -1
    Return $sqlCon
EndFunc ;==>_connectDB2

Func _printDB2Recordset($sqlCon, $SQL)
    Local $sqlRs = ObjCreate('ADODB.Recordset')
    If Not @error Then
      $sqlRs.open($SQL, $sqlCon)
      If Not @error Then
            ;Loop until the end of file
            While Not $sqlRs.EOF
                ;Retrieve data from the following fields
;~            ConsoleWrite($sqlRs.Fields('FIRST_NAME' ).Value & @CRLF)
                ConsoleWrite($sqlRs.Fields('SL_GRUPPE_KENNZAHL').Value & @CRLF)
                $sqlRs.MoveNext
            WEnd
            $sqlRs.close
      EndIf
    EndIf
EndFunc ;==>_printDB2Recordset

Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    MsgBox(0, 'COM Test', 'We intercepted a COM Error !' & @CRLF & @CRLF & _
            'err.description is: ' & @TAB & $oMyError.description & @CRLF & _
            'err.windescription:' & @TAB & $oMyError.windescription & @CRLF & _
            'err.number is: ' & @TAB & $HexNumber & @CRLF & _
            'err.lastdllerror is: ' & @TAB & $oMyError.lastdllerror & @CRLF & _
            'err.scriptline is: ' & @TAB & $oMyError.scriptline & @CRLF & _
            'err.source is: ' & @TAB & $oMyError.source & @CRLF & _
            'err.helpfile is: ' & @TAB & $oMyError.helpfile & @CRLF & _
            'err.helpcontext is: ' & @TAB & $oMyError.helpcontext _
            )
    SetError(1) ; to check for after this function returns
EndFunc ;==>MyErrFunc

kk_lee69 发表于 2011-5-14 01:19:13

你的ODBC 設定裡面已經有DB2的 驅動了嗎??

lluxury 发表于 2011-5-16 14:22:49

本帖最后由 lluxury 于 2011-5-16 14:30 编辑

有了,不过我用的个人的,可能要设系统,下次试试
....还是不行

kk_lee69 发表于 2011-5-16 22:20:18

改看看參數吧.......我用DB3的時候 網上找的 ODBC 語法 我都過不了剛好換個 參數就過了

lluxury 发表于 2011-5-18 13:54:27

改看看參數吧.......我用DB3的時候 網上找的 ODBC 語法 我都過不了剛好換個 參數就過了
kk_lee69 发表于 2011-5-16 22:20 http://www.autoitx.com/images/common/back.gif


    db3啊...能不能说的详细点呢

kk_lee69 发表于 2011-5-18 22:01:07

你用的是官網抓的UDF 吧.....不好意思 我實在看不懂@@   不過我給你個 簡單的SQL例子 跟資料....你試看看

我用AU3連接過 SQL    MYSQL    DB3DB4VFPRO   都是用一樣的的方式 跟語法 去連接的   你試看看吧
$conn = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$conn.Open ("driver={SQL Server};server=MIS ;uid=sa;pwd=chi;database=CHIComp");主機名IP127.0.0.1,UID=用戶,PWD=密碼,database=資料庫名   ※
$RS.ActiveConnection = $conn;主連接,這個好像比較重要


; 抓取 A01T357MK 資料
$RS.open ("select * from A01T357MK ")
While (Not $RS.eof And Not $RS.bof);迴圈讀表
        MsgBox(0, "欄位一", $RS.Fields (0).value,5);顯示第一個欄位 資料
        MsgBox(0, "欄位二", $RS.Fields (1).value)   ;顯示第二個欄位 資料

    $RS.movenext;跳出迴圈
WEnd;結束迴圈讀表
$RS.close;關閉數據分表


$conn.close;關閉資料庫連接主要在$conn.Open後面的部分在變換.........

DB2找到的資料如下

http://social.msdn.microsoft.com/Forums/zh-TW/805/thread/623c395b-6ae1-4c7c-977e-9ccaf395122c


IBM DB2
OLE DB, OleDbConnection (.NET) from ms


TCP/IP:

"Provider=DB2OLEDB;Network Transport Library=TCPIP;Network Address=XXX.XXX.XXX.XXX;Initial Catalog=MyCtlg;Package Collection=MyPkgCol;Default Schema=Schema;User ID=myUsername;Password=myPassword"



APPC:

"Provider=DB2OLEDB;APPC Local LU Alias=MyAlias;APPC Remote LU Alias=MyRemote;Initial Catalog=MyCtlg;Package Collection=MyPkgCol;Default Schema=Schema;User ID=myUsername;Password=myPassword"



IBM's OLE DB Provider (shipped with IBM DB2 UDB v7 or above)


TCP/IP:

Provider=IBMDADB2;Database=sample;HOSTNAME=db2host;PROTOCOL=TCPIP;PORT=50000;uid=myUsername;pwd=myPassword;



ODBC


Standard:

"driver={IBM DB2 ODBC DRIVER};Database=myDbName;hostname=myServerName;port=myPortNum;protocol=TCPIP; uid=myUsername; pwd=myPassword"
页: [1]
查看完整版本: au3 如何连接DB2