如何建立与 OpenEdge 数据库的连接

How do I establish a connection to an OpenEdge database

我正在尝试连接到 OpenEdge 数据库,以便我可以对其执行查询。但是,我无法弄清楚如何连接到它来进行这些查询。

到目前为止,我已经尝试制作一个配置文件,但我不确定如何使用它建立与服务器的连接:

"HMMv10": {
    "dbConfig": {
    "connectionString": "DRIVER={Progress OpenEdge 11.3 Driver}",
    "UID": "SYSPROGRESS",
    "pwd": "***",
    "host": "host.local",
    "port": "18210",
    "db": "hmm10"
    }
}

我不知道该配置文件的用途或工作原理,但在尝试设置第 3 方软件以连接到 OpenEdge 数据库之前,最好使用提供的 OE 工具来验证您有一个正确配置的连接可用于连接。

Progress 提供了一个名为 "sqlexp" 的命令行工具,您可以使用它来测试连接。访问该工具的最简单方法是通过 "proenv" 命令 shell。在 Windows 上,只需打开 "proenv"(它与 "Progress" 程序组中的其他 Progress 命令一起安装)。如果你有 Linux 或 UNIX 安装你 运行 $DLC/bin/proenv.

然后像这样启动 sqlexp(我使用本地数据库名和端口号):

proenv> sqlexp -db s2k -H localhost -S 9500 -user sysprogress -password sysprogress

OpenEdge Release 11.7.2 as of Tue Oct 24 18:20:59 EDT 2017
Connecting user "sysprogress" to URL "jdbc:datadirect:openedge://localhost:9500;databaseName=s2k"... (8920)

SQLExplorer>

如果没有错误并且您收到 SQLExplorer> 提示,这足以表明存在可用的工作连接。

如果您想更进一步并证明您已获得获取数据的权限,请尝试一个简单的 select 语句:

SQLExplorer> select count(*) from pub.customer;

            count(*) 
-------------------- 
                1117 

SQLExplorer> quit;

proenv>

如果这不起作用,那么本地 DBA 没有配置 SQL 访问权限,或者您的 configuration/credentials 不正确,使用其他工具无法解决这个问题。

OpenEdge SQL 注释:

如果您还不知道 - 所有 OpenEdge 数据都是可变长度的。许多 SQL 工具期望字段的宽度是已知的,使用元模式数据来获取默认值。如果本地 DBA 没有通过 "dbtool" 维护该数据,那么您可能会因为数据比预期宽而出错。

sqlexp 要求命令以“;”结尾。

"pub" 模式是 OpenEdge 应用程序表所在的模式。 Table 名称需要 "pub." pre-pended.

Table 和包含“-”的字段名称需要用引号引起来。

我把我发现的答案贴出来,以防其他人正在寻找这个答案。在 NodeJS 中使用 REST API 我使用 npm-odbc 和 OpenEdge odbc 驱动程序连接到数据库。尽管 npm-odbc 包只提到了 Unix,但它实际上在 windows.

上工作