找回密码
 加入
搜索
查看: 4062|回复: 5

[AU3基础] au3 如何连接DB2

  [复制链接]
发表于 2011-5-13 16:39:54 | 显示全部楼层 |阅读模式
跑到国外找来代码如下,总报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 [Lesen/Schreiben/Beides]
    $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
发表于 2011-5-14 01:19:13 | 显示全部楼层
你的ODBC 設定裡面已經有DB2的 驅動了嗎??
 楼主| 发表于 2011-5-16 14:22:49 | 显示全部楼层
本帖最后由 lluxury 于 2011-5-16 14:30 编辑

有了,不过我用的个人的,可能要设系统,下次试试
....还是不行
发表于 2011-5-16 22:20:18 | 显示全部楼层
改看看參數吧.......我用DB3的時候 網上找的 ODBC 語法 我都過不了  剛好換個 參數就過了
 楼主| 发表于 2011-5-18 13:54:27 | 显示全部楼层
改看看參數吧.......我用DB3的時候 網上找的 ODBC 語法 我都過不了  剛好換個 參數就過了
kk_lee69 发表于 2011-5-16 22:20



    db3啊...能不能说的详细点呢
发表于 2011-5-18 22:01:07 | 显示全部楼层
你用的是官網抓的UDF 吧.....不好意思 我實在看不懂@@   不過我給你個 簡單的SQL例子 跟資料....你試看看

我用AU3  連接過 SQL    MYSQL    DB3  DB4  VFPRO   都是用一樣的的方式 跟語法 去連接的   你試看看吧
$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 ... c-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"
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-14 14:35 , Processed in 0.074875 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表