1. 安装PostgreSQL ODBC驱动。

    在PosetgreSQL官网下载PostgreSQL ODBC driver

  2. 配置DSN。

    打开ODBC数据源管理程序。

    Windows 10上可以在任务栏的搜索框中搜索”管理工具“,然后打开ODBC数据源管理程序。

    点击添加,选择”PostgreSQL Unicode“

    添加完成后在列表中可以找到如PostgreSQL35W一样的DSN项

  3. 下载ADO.au3 UDF

    这是为简化ADO操作封装的一些数据库操作接口

  4. 示例代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    #include "ADO.au3"
    #include <Array.au3>
    #include <MsgBoxConstants.au3>
    #include <AutoItConstants.au3>

    Global $oCon = Null ; $oConnection

    _fMyADO_test()
    Func _fMyADO_test()
    Local $sDSN = 'PostgreSQL35W'
    Local $sDatabase = 'xxx' ; DB Name
    Local $sServer = 'xxx' ; DB Host
    Local $sPort = 'xx' ; DB Port
    Local $sUser = 'xx' ; DB Username
    Local $sPassword = 'xx' ; DB Password

    Local $sConnectionString = 'DSN=' & $sDSN & ';DATABASE=' & $sDatabase & ';SERVER=' & $sServer & ';PORT=' & $sPort & ';UID=' & $sUser & ';PWD=' & $sPassword & ';'

    ; Create connection object
    Local $oConnection = _ADO_Connection_Create()

    ; Open connection with $sConnectionString
    _ADO_Connection_OpenConString($oConnection, $sConnectionString)
    If @error Then Return SetError(@error, @extended, $ADO_RET_FAILURE)

    $oCon = $oConnection

    Local $Query, $aQresult, $Qresult

    ConsoleWrite("_Example_PostgreSQL " & $sConnectionString & @CRLF)
    $Query = "insert into company (id, name, age) values (11, 'gongwo', 1) ;"
    $aQresult = _ADO_Execute($oCon, $Query, True)
    ConsoleWrite("1 $Query " & $Query & @CRLF)
    ConsoleWrite("1 $Qresult " & $Qresult & @CRLF)
    ConsoleWrite("1 $aQresult " & $aQresult & @CRLF)
    $aQresult = ''

    $Query = "Select * from company ; "
    $aQresult = _ADO_Execute($oCon, $Query, True)
    $Qresult = _ArrayToString($aQresult[2])
    ConsoleWrite("2 $Query " & $Query & @CRLF)
    ConsoleWrite("2 $Qresult " & $Qresult & @CRLF)
    $aQresult = ''
    EndFunc ;==>_fMyADO_test