PostgreSQL数据库的读取|查询|增加|删除【已解决】
本帖最后由 kemyliu 于 2025-10-11 08:43 编辑现在的数据库都用PostgreSQL了,在我们论坛和英文论坛搜了一圈也没发现有PostgreSQL的UDF,试了下用ADO.au3,但是没法链接数据库,那位大神有PostgreSQL数据库的读取|查询|增加|删除,帮忙分享一下。 感谢!!
下面是ADO.au3 UDF的链接。
ADO.au3 UDF - BETA - Support Topic - AutoIt Projects and Collaboration - AutoIt Forums;~ $Driver='{PostgreSQL Unicode(x64)}'
;~ $Server='xxxxxxxx'
;~ $Port='5432'
;~ $DB='Table'
;~ $User='postgres'
;~ $Password='postgres'
; 数据库连接函数
Func ConnectDatabase($User, $Password, $DB, $Server, $Driver = '{PostgreSQL Unicode(x64)}', $Port = '5432')
$ConnectionStr = "Driver=" & $Driver & ";" & _
"Server=" & $Server & ";" & _
"Port=" & $Port & ";" & _
"Database=" & $DB & ";" & _
"Uid=" & $User & ";" & _
"Pwd=" & $Password & ";" & _
"Option=3;"
Local $dbConn = ObjCreate("ADODB.Connection") ; 创建连接对象
If Not IsObj($dbConn) Then
ConsoleWrite("Error: ADODB Connection Fail!!" & @CRLF)
Return 0
EndIf
ConsoleWrite("Contact to DB: " & $ConnectionStr & @CRLF)
$dbConn.Open($ConnectionStr) ; 尝试打开连接
; 捕获连接错误
If @error Then
ConsoleWrite("Error: Connect Fail " & @error & @TAB & $ConnectionStr & @CRLF)
Return 0
EndIf
Return $dbConn
EndFunc ;==>ConnectDatabase
; 数据库查询函数
Func ExecuteQuery($dbConn, $querySQL)
Local $rs = $dbConn.Execute($querySQL) ; 执行查询
If Not IsObj($rs) Then
ConsoleWrite("SQL Ru Fail: " & @error & @CRLF)
Return 0
EndIf
; 计算结果行列数量并存储于二维数组
Local $result ; 初始化二维数组结构
Local $rowsCount = 0
Local $columnsCount = $rs.Fields.Count
; 动态创建二维数组字段
While Not $rs.EOF
ReDim $result[$rowsCount + 1][$columnsCount] ; 增加新行
For $columnIndex = 0 To $columnsCount - 1
$result[$rowsCount][$columnIndex] = $rs.Fields($columnIndex).Value
Next
$rowsCount += 1
$rs.MoveNext
WEnd
$rs.Close
Return $result
EndFunc ;==>ExecuteQuery
; 执行不返回结果的SQL (插入、更新、删除)
Func ExecuteNonQuery($dbConn, $nonQuerySQL)
; 检查数据库连接对象有效性
If Not IsObj($dbConn) Then
ConsoleWrite("Error: Invalid Database Connection!" & @CRLF)
Return 0
EndIf
Local $rowsAffected = -1 ; 基于 ADODB.Connection.Execute 的返回值初始化受影响的行的变量
Local $rs ; 捕获可选的记录集(通常为空)
; 执行 SQL 语句
$rs = $dbConn.Execute($nonQuerySQL, $rowsAffected) ; ADODB Execute 方法返回受影响行数
If @error Then
ConsoleWrite("SQL Execution Error! SQL: " & $nonQuerySQL & " | Error Code: " & @error & @CRLF)
Return 0
EndIf
; 输出受影响的行数到控制台
ConsoleWrite("SQL Executed Successfully. Rows Affected: " & $rowsAffected & @CRLF)
Return $rowsAffected ; 返回受影响的行数
EndFunc ;==>ExecuteNonQuery
; 数据库连接关闭函数
Func CloseDatabase($dbConn)
If IsObj($dbConn) Then $dbConn.Close
EndFunc ;==>CloseDatabase
; 格式化查询结果显示
Func FormatQueryResult($queryResult)
If Not IsArray($queryResult) Then Return "未查询到结果"
Local $formatted = ""
For $i = 0 To UBound($queryResult, 1) - 1 ; 遍历行
For $j = 0 To UBound($queryResult, 2) - 1 ; 遍历列
$formatted &= $queryResult[$i][$j] & "|" ; 用分隔符“|”连接每列
Next
$formatted &= @CRLF ; 换行
Next
Return $formatted
EndFunc ;==>FormatQueryResult
找不到可用的UDF,自己用AI写了一个,自用版,分享给发家吧。
貌似 有更新檔到 2.1.19 BETA
https://www.autoitscript.com/forum/files/file/389-adoau3-udf/?do=download
還沒玩過PostgreSQL ,你先下載 最新版看看 yohoboy 发表于 2025-10-7 02:16
貌似 有更新檔到 2.1.19 BETA
https://www.autoitscript.com/forum/files/file/389-adoau3-udf/?do=downl ...
我就是下载的2.1.19版的,就是连不上数据库,里面的案列也是参考了还是不行
页:
[1]