我正在尝试将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};")
问题是我在连接服务器时不会事先知道数据库名称。我想要服务器上的数据库列表,然后是那些数据库中的表,我应该如何处理?
答案 0 :(得分:0)
您无法通过ODBC“连接到DB2服务器”;您只能连接到数据库,您显然需要指定数据库名称。您可以使用DB2 C / C ++ API调用db2DbDirOpenScan
和db2DbDirGetNextEntry
列出数据库目录,但是此代码需要在服务器本身上执行,否则它将尝试列出数据库目录客户端机器。
答案 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,例如SYSSCHEMAS和SYSTABLES。 ODBC/JDBC Catalog views和ANS/ISO Catalog views也可用。
如果您愿意,可以通过IBM i Access在ODBC连接之外使用