从AutoHotKey快速访问PostgreSQL数据库

3

我正在寻找一种从AHK脚本与PostgreSQL数据库进行交互的方法。目前我找到的所有方法都是通过命令行运行psql.exe并解析输出,这显然会导致极差的性能(每次执行进程)。

问题是,是否有任何直接与数据库交互的方法?是否有类似于其他语言中已知的DllCall或其他类似方法可以允许您连接并发送查询?

该库应该可以实现以下操作:

psql_connection := psql_connect("localhost", "5432", "postgres", "dbpass", "TestDB")
rows := psql_query(psql_connection, "select * from TestTable limit 10") ; returns array of objects

快速查看表明autohotkey是用C++编写的。如果没有人为它编写ODBC绑定,我会感到惊讶。如果没有,那么我猜你就要开始动手了!直接使用libpqlibpqtypes或者libpqxx可能更容易些。 - Craig Ringer
有一个有用的库 https://github.com/IsNull/ahkDBA。只是似乎无法与Postgres一起使用。 - roma
1
@roma 我认为目前还没有实现这个库...我建议在这里的论坛上发布一个帖子 http://ahkscript.org,我相信很多人会提供帮助。如果没有,我会尝试的 ;) - Joe DF
1
已发布消息在此处:http://ahkscript.org/boards/viewtopic.php?f=5&t=4042 我会看看是否有人已经解决了这个问题。 - roma
我以前使用过这个库来连接SQL Server。但我不确定它是否适用于postgresql。不过它确实使用了你要求的语法。 - Elliot DeNolf
在C#中编写这样的库作为COM组件并使用ComObjCreate在AutoHotkey中创建对象非常容易。但是,您必须定义所有的封送类,例如您的行对象等。 - Tahir Hassan
2个回答

1

0

你可以使用这个库:https://autohotkey.com/board/topic/83542-func-adosql-uses-ado-to-manage-sql-transactions-v503l/

或者如果你感觉有冒险精神,可以使用 ComObjCreate("") 创建 ADODB.Connection,其中你可以使用来自 https://learn.microsoft.com/en-us/sql/ado/reference/ado-api/connection-object-properties-methods-and-events 的方法。

;test - may not be accurate
connection := ComObjCreate("ADODB.Connection")
connection.Open("Provider =PostgreSQL OLE DB Provider; Data Source =localhost; location =DBTest; User ID =postgres; password =pass")
recordset := connection.Execute("SELECT * FROM tablename")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接