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 你的ODBC 設定裡面已經有DB2的 驅動了嗎?? 本帖最后由 lluxury 于 2011-5-16 14:30 编辑
有了,不过我用的个人的,可能要设系统,下次试试
....还是不行 改看看參數吧.......我用DB3的時候 網上找的 ODBC 語法 我都過不了剛好換個 參數就過了 改看看參數吧.......我用DB3的時候 網上找的 ODBC 語法 我都過不了剛好換個 參數就過了
kk_lee69 发表于 2011-5-16 22:20 http://www.autoitx.com/images/common/back.gif
db3啊...能不能说的详细点呢 你用的是官網抓的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]