不带数据库名称的DB2 ODBC连接字符串
我正在尝试用ODBC连接DB2服务器,如果我在连接字符串中指定不带数据库名称的DB2 ODBC连接字符串,db2,odbc,Db2,Odbc,我正在尝试用ODBC连接DB2服务器,如果我在连接字符串中指定数据库,那么ODBC工作正常 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};HostN
数据库
,那么ODBC工作正常
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};")
问题是,在连接到服务器时,我不会预先知道数据库名称。我想要服务器上的数据库列表,然后是这些数据库中的表,我应该如何处理?您不能通过ODBC“连接到DB2服务器”;您只能连接到数据库,显然需要为其指定数据库名称。您可以使用DB2C/C++API调用
db2DbDirOpenScan
和db2dbdirgetnextry
列出数据库目录,但此代码需要在服务器本身上执行,否则,它将尝试列出客户端计算机上的数据库目录。如果您正在连接到DB2 for i服务器(以前是OS/400上的DB2 UDB)--
最初使用主机名连接,允许数据库默认。然后可以在DB2fori视图中获得数据库列表。您的查询可能如下所示:
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
如果需要,您可以连接到该数据库。连接到适当的数据库后,可以查询其他数据库,如和。而且也可以使用
如果愿意,可以通过IBM i Access在ODBC连接之外使用。这是针对DB2 LUW的特定于平台的答案。