好的,我正在搜索 Vertica 文档,但没有看到任何在不创建 DSN 的情况下连接 ODBC 的方法。JDBC 似乎是另一回事。如果有办法做到这一点,我没有看到它。
问题似乎是(假设您有驱动程序)系统不知道您的连接字符串应该由 Vertica 驱动程序处理。DSN 已经指定了它,所以这就是它起作用的原因(我有根据的猜测)。
这是他们为 JDBC 提供的示例:
“jdbc:vertica://server:port/db?user=username&password=password&ssl=true”
JDBC 连接字符串似乎让代码知道它应该使用 Vertica。
让我发布有关 ODBC 的相关文档的一部分(请原谅格式):
DSN 参数
下表中的参数对于所有用户和系统 DSN 条目都是通用的。提供的示例适用于 Windows 客户端。
编辑 DSN 参数:
* UNIX and Linux users can edit the odbc.ini file. (See Creating an ODBC DSN for Linux and Solaris Clients.) The location of this file is specific to the driver manager.
* Windows users can edit the DSN parameters directly by opening the DSN entry in the Windows registry (for example, at HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\vmartdb). However, the Vertica-preferred method is to follow the steps in Creating an ODBC DSN for Windows Clients.
* Parameters can be set while making the connection using SQLDriverConnect().
sqlRet = SQLDriverConnect(sql_hDBC, 0, (SQLCHAR*)"DSN=VerticaSQL;BinaryDataTransfer=1",
SQL_NTS, szDNS, 1024,&nSize, SQL_DRIVER_NOPROMPT);
Note: In the connection string ';' is a reserved symbol. If you need to set multiple parameters as part of ConnSettings parameter use '%3B' in place of ';'. Also use '+' instead of spaces.
For Example:
sqlRet = SQLDriverConnect(sql_hDBC, 0, (SQLCHAR*)"DSN=VerticaSQL;BinaryDataTransfer=1;ConnSettings=
set+search_path+to+a,b,c%3 Bset+locale=ch;SSLMode=prefer", SQL_NTS,
szDNS, 1024,&nSize, SQL_DRIVER_NOPROMPT);
* Parameters can also be set and retrieved after the connection has been made using SQLConnect(). Parameters can be set and retrieved using SQLSetConnectAttr(),SQLSetStmtAttr(), SQLGetConnectAttr() and SQLGetStmtAttr() API calls.