没有数据库名称的DB2 ODBC连接字符串

时间:2014-02-14 12:04:14

标签: db2 odbc

我正在尝试将DB2 Server与ODBC连接,如果我在连接字符串中指定Database,则工作正常。

driver   = 'IBM DB2 ODBC DRIVER'
server   = '10.30.30.114'
port     = '50000'
protocol = 'TCPIP'
database = 'SAMPLE'

user = 'administrator'
pass = 'password'

DBI.connect("DBI:ODBC:Driver=#{driver};HostName=#{server};Port=#{port};Protocol=#{protocol};Database=#{database};Uid=#{user};Pwd=#{pass};")

问题是我在连接服务器时不会事先知道数据库名称。我想要服务器上的数据库列表,然后是那些数据库中的表,我应该如何处理?

2 个答案:

答案 0 :(得分:0)

您无法通过ODBC“连接到DB2服务器”;您只能连接到数据库,您显然需要指定数据库名称。您可以使用DB2 C / C ++ API调用db2DbDirOpenScandb2DbDirGetNextEntry列出数据库目录,但是此代码需要在服务器本身上执行,否则它将尝试列出数据库目录客户端机器。

答案 1 :(得分:0)

IF 您正在连接 DB2 for i 服务器(以前是OS / 400上的DB2 UDB) -

最初使用主机名连接,允许数据库默认。然后,您可以在DB2 for i SYSCATALOGS视图中获取数据库列表。您的查询可能如下所示:

SELECT catalog_name,        -- database name
       catalog_text         -- DB description
FROM QSYS2.SYSCATALOGS
WHERE catalog_type='LOCAL'  -- local to that host
  AND catalog_status='AVAILABLE'  -- REMOTE catalogs are 'UNKNOWN' status

然后,您可以连接到该数据库。连接到相应的数据库后,您可以查询其他DB2 for i catalog views,例如SYSSCHEMASSYSTABLESODBC/JDBC Catalog viewsANS/ISO Catalog views也可用。

如果您愿意,可以通过IBM i Access在ODBC连接之外使用

Other API's