当前位置: 首页 > 知识库问答 >
问题:

SQLDriverConnect函数使用SSL连接到编目Db2数据库的正确连接字符串是什么?

穆展鹏
2023-03-14

SQLDriverConnect函数使用SSL连接到编目Db2数据库的正确连接字符串是什么?编程语言-C++。

我如何准备数据库

db2 "CREATE DATABASE TESTDB"
....
db2 "CATALOG TCPIP NODE SSLNODE REMOTE <HOST> SERVER <PORT> SECURITY SSL
db2 "CATALOG DATABASE TESTDB AS SSLDS AT NODE SSLNODE"
db2 "TERMINATE"
db2stop
db2start

如果使用数据库名“testdb”可以连接,但使用数据库别名“sslds”时,连接失败:

第一次尝试通过别名“SSLDS”连接编目数据库时显示错误

[IBM][CLI Driver] SQL1224N  The database manager is not able to accept new requests, has terminated all requests in progress, or has terminated the specified request because of an error or a forced interrupt.  SQLSTATE=55032
[IBM][CLI Driver] SQL30040N  Execution failed because of unavailable resources that will not affect the successful execution of subsequent commands and SQL statements:  Reason "0x0", Type of Resource "MEMORY", Resource Name "", Product ID "SQL11013 ".  SQLSTATE=57012
Database=SSLDS;UID=<USER>;PWD=<PWD>;Protocol=TCPIP;Servicename=<PORT>;Security=SSL;SSLClientKeystoredb=c:\ssl\storage.kdb;SSLClientKeystash=c:\ssl\storage.sth;
SSL server keydb file                   (SSL_SVR_KEYDB) = C:\ssl\server.kdb
SSL server stash file                   (SSL_SVR_STASH) = C:\ssl\server.sth
SSL server certificate label            (SSL_SVR_LABEL) = selfsignedcert
SSL service name                         (SSL_SVCENAME) = db2c_DB2
SSL cipher specs                      (SSL_CIPHERSPECS) =
SSL versions                             (SSL_VERSIONS) =
SSL client keydb file                  (SSL_CLNT_KEYDB) =
SSL client stash file                  (SSL_CLNT_STASH) =
DB2INSTOWNER=*****
DB2PORTRANGE=***:***
DB2_GRP_LOOKUP=LOCAL,TOKENLOCAL
DB2INSTPROF=C:\PROGRAMDATA\IBM\DB2\DB2COPY1
DB2COMM=SSL

创建GSK存储

gsk8capicmd_64.exe -keydb -create -db "C:\ssl\server.kdb" -stash -genpw
gsk8capicmd_64.exe -keydb -create -db "C:\ssl\storage.kdb" -stash -genpw
gsk8capicmd_64.exe -cert -create -db "C:\ssl\server.kdb" -stashed -label "selfsignedcert" -dn "CN=TestCompany"
gsk8capicmd_64.exe -cert -extract -db "C:\ssl\server.kdb" -stashed -label "selfsignedcert" -target "C:\ssl\server_cert.arm" -format ascii
gsk8capicmd_64.exe -cert -add -db "C:\ssl\storage.kdb" -stashed -label "selfsignedcert" -file "C:\ssl\server_cert.arm" -format ascii

共有1个答案

傅阿苏
2023-03-14

如果在连接字符串中指定database=...,则必须使用真实的数据库名称,而不是别名。

如果要使用别名,则使用dsn=...(并省略database=...)。

此外,连接字符串应包含hostname=...以获得最佳结果。

此外,要外部化C++源代码中的所有连接属性,您可以简单地使用DSN=...;uid=...;pwd=...;并在db2dsdriver.cfgxml文件中定义DSN属性(包括SSL属性)。你的选择。

您的其他错误(如SQL1224N和SQL30040N)是特定于配置的,您的问题忽略了客户端和服务器配置的事实。但首先修复连接字符串,这些错误可能会消失。

 类似资料:
  • 创建数据库后,必须连接或启动数据库才能正常使用。 语法: 示例: 假设要连接 数据库,参考以下代码: 执行上面命令,得到以下结果:

  • 请知道,我对数据库很陌生。我能够正确安装mySQL和java连接器驱动程序。但每当我在eclipse中运行程序并尝试从我创建的数据库中检索信息时,我都会收到以下消息:“需要SSL连接,但服务器不支持”。下面是我要使用安全SSL连接运行的代码: `公共静态void main(字符串[]参数){

  • 问题内容: true如果传入的数字包含,则此方法返回1。 该+ “”零件的目的是 什么?如何使一个?(据我所知.contains只能使用Strings)。 问题答案: Anint是原始元素。在字符串中添加基元将执行该基元到a的隐式转换,String并将两个字符串加在一起。在这种情况下,将int转换并添加”“(empty String), 可以重写为: 要么 要么

  • 我正在开发一个程序,该程序将获取一个文本文件,并将数字从0-99转换为文字(即0)- 这里有几行输出(每一行都是不同的system.out行): 这是输入文件上的三行: 如您所见,数字随系统一起添加和打印。从函数convertToWord中退出,但一旦返回main,就会丢失。如何跨函数将这些转换附加到字符串?

  • 当我试图使用Spring Boot 2.2.1连接到DB2时。HikariCP池无法成功连接,但同时连接到JDBC。 null 附加的属性文件:

  • 问题内容: 我正在尝试使用jdbc-odbc桥创建一个简单的连接: 但是然后我得到这个异常: 有任何想法吗? 2009年3月24日更新:现在可以使用了。创建了一个用户数据源,由于某种原因该异常消失了。 作为一个普遍的问题,用Java处理数据库连接的最佳方法是什么? 问题答案: 为了回答您的一般问题,我想说处理Java中数据库连接的最佳方法是避免JDBC- ODBC桥。可以测试或学习JDBC,但不能