开放式数据库连接(ODBC)提供了用于访问数据库管理系统(DBMS)的标准软件接口。
我尝试安装 Oracle instantclient-basic-windows.x64-12.1.0.2.0 和 instantclient-odbc-windows.x64-12.1.0.2.0 我在测试 ODBC 驱动程序配置时收到以下错误...
有人知道“如何通过ODBC连接Power Bi Cloud版本和Netsuite吗?”
我是Power Bi云版本的新手,我需要将power Bi与Netsuite(版本2018.2)连接。因为我能够使用ODBC连接将Power Bi Deskop与Netsuite连接。但是对于Power bi Cloud版本...
Excel - 使用单元格值作为传递日期 ODBC SQL PowerQuery
我在这里和这里看到了关于SO的参考帖子。我已尝试论坛的回复,但无法成功运行我的 PowerQuery。 到目前为止,我已将开始日期和结束日期单元格命名为 &...
我们的Access 2010数据库中有一个链接表,后端是SQL Server 2012,通过ODBC连接。该表在单个字段(记录的标识符)上建立索引(唯一、非聚集)。 ...
使用 PDO ODBC SQL Server 连接时定义编码?
我使用如下方式连接到 SQL Server: $pdo = new PDO("odbc:DRIVER=SQL Server 的 ODBC 驱动程序 17;SERVER=$serverName;DATABASE=$dbName", $username, $password); PDO 实例已创建...
我能够很好地建立连接,但是我无法弄清楚如何在完成后关闭连接。 有什么建议吗? if (!require('odbc')) install.packages('odbc') 骗局&l...
4年后突然出现unixODBC][FreeTDS][SQL Server]无法连接数据源的错误
在过去四年中,我们一直在从共享 Linux 主机到 MS SQL 数据库建立 ODBC 连接,并且运行良好。上周末突然停了。不幸的是,这是
我无法连接到 SQL 服务器 SQLExpress。几天前连接工作正常。 这就是我尝试连接的方式(我正在使用 Microsoft SQL Server Management Studio): 连接 = pyodbc。
这是我的connection.php 这是我的连接.php <?php ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); $dsn = 'DSN=demo;Server=demo;UID=demo;PWD=demo'; $conn = odbc_connect($dsn, '', ''); if ($conn) { // Connection successful, proceed with query execution echo "Connection successful.<br>"; // Define the SQL query $sql = "SELECT * FROM employee"; // Ensure this is the correct table name // Prepare and execute the SQL query $stmt = odbc_prepare($conn, $sql); if (odbc_execute($stmt)) { // Get column names $columns = []; $num_fields = odbc_num_fields($stmt); for ($i = 1; $i <= $num_fields; $i++) { $columns[] = odbc_field_name($stmt, $i); } // Print the column names print_r($columns); echo "<br>"; // Fetch and display the results row by row while ($row = odbc_fetch_array($stmt)) { print_r($row); echo "<br>"; } } else { echo "Query execution failed: " . odbc_errormsg($conn); } // Close the connection odbc_close($conn); } else { echo "Connection failed: " . odbc_errormsg(); } ?> 从本地主机每次输出时我都找不到列名 Warning: odbc_prepare(): SQLColAttribute can't handle SQL_DESC_OCTET_LENGTH: \[S1C00\] \[TimesTen\]\[TimesTen 18.1.4.42.0 CLIENT\]Driver not capable in C:\\xampp\\htdocs\\timesten\\test_connection.php on line 20 Warning: odbc_prepare(): SQLColAttribute can't handle SQL_DESC_OCTET_LENGTH: \[S1C00\] \[TimesTen\]\[TimesTen 18.1.4.42.0 CLIENT\]Driver not capable in C:\\xampp\\htdocs\\timesten\\test_connection.php on line 20 Warning: odbc_prepare(): SQLColAttribute can't handle SQL_DESC_OCTET_LENGTH: \[S1C00\] \[TimesTen\]\[TimesTen 18.1.4.42.0 CLIENT\]Driver not capable in C:\\xampp\\htdocs\\timesten\\test_connection.php on line 20 Array ( \[0\] =\> \[1\] =\> \[2\] =\> ) Array ( \[John Doe\] =\> John Doe \[\] =\> 30 \[\] =\> [email protected] ) Array ( \[Jane Smith\] =\> Jane Smith \[\] =\> 25 \[\] =\> [email protected] ) Array ( \[Alice Johnson\] =\> Alice Johnson \[\] =\> 28 \[\] =\> [email protected] ) Array ( \[Bob Brown\] =\> Bob Brown \[\] =\> 35 \[\] =\> [email protected] ) Array ( \[Charlie Davis\] =\> Charlie Davis \[\] =\> 40 \[\] =\> [email protected] ) 我想查看列名称。它总是向我显示这样的“警告:odbc_prepare():SQLColAttribute无法处理SQL_DESC_OCTET_LENGTH:[S1C00] [TimesTen][TimesTen 18.1.4.42.0 CLIENT]驱动程序不支持C:\ xampp \ htdocs imeste
我在 AWS 上有一个 Redshift 实例。 我的应用程序在与 Redshift 集群位于同一区域的 EC2 上作为 Windows 服务运行。我有一个查询,平均需要约 45 秒和红移
为什么可以连接到 mysql,但 SSIS 源 odbc 组件中不显示列?
当我使用 SSIS 上的 odbc 源组件连接到 mysql 数据库时,它可以工作并显示表,但是当我选择表并转到列时,没有显示列。 我有 mysql 连接器网络 8.2 ...
在go中我遇到了一个问题,sql.DB的连接池堆积了如此多的连接,以至于达到了odbc驱动程序的限制。连接应该自动关闭,但这从来没有......
如果我每次用户提交表单时都在 ODBC 数据库中存储 HTML TEXTAREA,那么用于检索 1) 包含给定子字符串的所有行 2) 不包含给定子字符串的所有行(以及 .. .
我必须为 Azure 创建 Windows VM 模板,以便人们可以创建该模板的实例。模板和实例创建得很好,没有问题。 在我已经安装了 Stata 的虚拟机中...
我尝试迁移以前在 Windows 10 下使用 32 位 ODBC 驱动程序运行的 Excel 工作表。 看来我的问题并不新鲜,因为我读了几个有关此问题的问题。 我在 Windows 11 下。我运行
我正在使用 Microsoft 的 ODBC 驱动程序将 C++/Linux 应用程序连接到远程运行的 SQL Server 数据库,当我尝试连接到数据库时,调用失败并显示 SQL_INVALID_HANDLE。重新...
我正在尝试使用c++中的odbc在sql server中进行批量复制。 这是我的代码: #包括 #包括 #包括 #包括 #包括 我正在尝试使用 C++ 中的 odbc 在 sql server 中进行批量复制。 这是我的代码: #include <stdio.h> #include <string.h> #include <windows.h> #include <sql.h> #include <sqlext.h> #include <odbcss.h> #include<tchar.h> SQLHENV henv = SQL_NULL_HENV; HDBC hdbc1 = SQL_NULL_HDBC, hdbc2 = SQL_NULL_HDBC; SQLHSTMT hstmt2 = SQL_NULL_HSTMT; void Cleanup() { if (hstmt2 != SQL_NULL_HSTMT) SQLFreeHandle(SQL_HANDLE_STMT, hstmt2); if (hdbc1 != SQL_NULL_HDBC) { SQLDisconnect(hdbc1); SQLFreeHandle(SQL_HANDLE_DBC, hdbc1); } if (hdbc2 != SQL_NULL_HDBC) { SQLDisconnect(hdbc2); SQLFreeHandle(SQL_HANDLE_DBC, hdbc2); } if (henv != SQL_NULL_HENV) SQLFreeHandle(SQL_HANDLE_ENV, henv); } void HandleDiagnosticRecord (SQLHANDLE hHandle, SQLSMALLINT hType, RETCODE RetCode) { SQLSMALLINT iRec = 0; SQLINTEGER iError; WCHAR wszMessage[1000]; WCHAR wszState[SQL_SQLSTATE_SIZE+1]; if (RetCode == SQL_INVALID_HANDLE) { fwprintf(stderr, L"Invalid handle!\n"); return; } while (SQLGetDiagRec(hType, hHandle, ++iRec, wszState, &iError, wszMessage, (SQLSMALLINT)(sizeof(wszMessage) / sizeof(WCHAR)), (SQLSMALLINT *)NULL) == SQL_SUCCESS) { // Hide data truncated.. if (wcsncmp(wszState, L"01004", 5)) { fwprintf(stderr, L"[%5.5s] %s (%d)\n", wszState, wszMessage, iError); } } } #define TRYODBC(h, ht, x) { RETCODE rc = x;\ if (rc != SQL_SUCCESS) \ { \ HandleDiagnosticRecord (h, ht, rc); \ } \ if (rc == SQL_ERROR) \ { \ fwprintf(stderr, L"Error in " L#x L"\n"); \ Sleep(30000); \ } \ } void extract_error( char *fn, SQLHANDLE handle, SQLSMALLINT type) { SQLINTEGER i = 0; SQLINTEGER native; SQLWCHAR state[ 7 ]; SQLWCHAR text[256]; SQLSMALLINT len; SQLRETURN ret; fprintf(stderr, "\n" "The driver reported the following diagnostics whilst running " "%s\n\n", fn); do { ret = SQLGetDiagRec(type, handle, ++i, state, &native, text, sizeof(text), &len ); if (SQL_SUCCEEDED(ret)) printf("%s:%ld:%ld:%s\n", state, i, native, text); } while( ret == SQL_SUCCESS ); } int main() { RETCODE retcode; // BCP variables. char *terminator = "\0"; // bcp_done takes a different format return code because it returns number of rows bulk copied // after the last bcp_batch call. DBINT cRowsDone = 0; // Set up separate return code for bcp_sendrow so it is not using the same retcode as SQLFetch. RETCODE SendRet; // Allocate the ODBC environment and save handle. retcode = SQLAllocHandle (SQL_HANDLE_ENV, NULL, &henv); if ( (retcode != SQL_SUCCESS_WITH_INFO) && (retcode != SQL_SUCCESS)) { printf("SQLAllocHandle(Env) Failed\n\n"); Cleanup(); return(9); } // Notify ODBC that this is an ODBC 3.0 app. retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3, SQL_IS_INTEGER); if ( (retcode != SQL_SUCCESS_WITH_INFO) && (retcode != SQL_SUCCESS)) { printf("SQLSetEnvAttr(ODBC version) Failed\n\n"); Cleanup(); return(9); } // Allocate ODBC connection handle, set bulk copy mode, and connect. retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1); if ( (retcode != SQL_SUCCESS_WITH_INFO) && (retcode != SQL_SUCCESS)) { printf("SQLAllocHandle(hdbc1) Failed\n\n"); Cleanup(); return(9); } retcode = SQLSetConnectAttr(hdbc1, SQL_COPT_SS_BCP, (void *)SQL_BCP_ON, SQL_IS_INTEGER); if ( (retcode != SQL_SUCCESS_WITH_INFO) && (retcode != SQL_SUCCESS)) { printf("SQLSetConnectAttr(hdbc1) Failed\n\n"); Cleanup(); return(9); } // sample uses Integrated Security, create the SQL Server DSN using Windows NT authentication SQLWCHAR dsn[30] = L"mssqltest"; //Name DNS SQLWCHAR user[10] = L"di_test"; SQLWCHAR pass[10] = L"di_test"; SQLWCHAR tb[20]=L"information1"; retcode = SQLConnectW(hdbc1, (SQLWCHAR *)dsn, SQL_NTS, (SQLWCHAR *) user, SQL_NTS, (SQLWCHAR *) pass, SQL_NTS); if ( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) ) { printf("SQLConnect() Failed\n\n"); Cleanup(); return(9); } // TRYODBC(hdbc1, SQL_HANDLE_DBC, retcode); // Initialize the bulk copy. retcode = bcp_init(hdbc1,L"information1", NULL, NULL, DB_IN); if ( (retcode != SUCCEED) ) { printf("bcp_init(hdbc1) Failed\n\n"); Cleanup(); return(9); } //Define our array SQLINTEGER custIDs[] = { 1, 2, 3, 4}; // Bind the program variables for the bulk copy. retcode = bcp_bind(hdbc1, (BYTE *)custIDs[0], 4, SQL_VARLEN_DATA, NULL, (INT)NULL, SQLINT4, 2); if ( (retcode != SUCCEED) ) { printf("bcp_bind(hdbc1) Failed\n\n"); Cleanup(); return(9); } // Could normally use strlen to calculate the bcp_bind cbTerm parameter, but this terminator // is a null byte (\0), which gives strlen a value of 0. Explicitly give cbTerm a value of 1. retcode = bcp_bind(hdbc1, (BYTE *)custIDs[0], 4, SQL_VARLEN_DATA, NULL, (INT)NULL, SQLINT4, 3); if ( (retcode != SUCCEED) ) { printf("bcp_bind(hdbc1) Failed\n\n"); Cleanup(); return(9); } if ( (SendRet = bcp_sendrow(hdbc1) ) != SUCCEED ) { printf("bcp_sendrow(hdbc1) Failed\n\n"); Cleanup(); return(9); } cRowsDone = bcp_done(hdbc1); if ( (cRowsDone == -1) ) { printf("bcp_done(hdbc1) Failed\n\n"); Cleanup(); return(9); } printf("Number of rows bulk copied after last bcp_batch call = %d.\n", cRowsDone); // Cleanup. SQLFreeHandle(SQL_HANDLE_STMT, hstmt2); SQLDisconnect(hdbc1); SQLFreeHandle(SQL_HANDLE_DBC, hdbc1); SQLDisconnect(hdbc2); SQLFreeHandle(SQL_HANDLE_DBC, hdbc2); SQLFreeHandle(SQL_HANDLE_ENV, henv); } 行中: retcode = bcp_init(hdbc1,L"information1", NULL, NULL, DB_IN); 我收到一个异常,提示访问冲突。我没有收到任何错误,但有一个异常。 有谁知道我应该如何解决这个问题? 我在一个 win32 程序中使用 bcp_xxxx 函数已经有 12-15 年了。该程序是在 VS6 上编译的,至今仍在生产中。 我最近在VS2015上重写了项目(终于……)。我也像你一样对 bcp_xxxx 功能有问题。 原始 VS6 程序包含以下文件: #include <sql.h> #include <sqlext.h> #include "C:\Program Files\Microsoft SQL Server\80\Tools\DevTools\Include\odbcss.h" SQLDriverConnect() 函数与包含 Driver=SQL Server 的连接字符串一起使用。 odbcbcp.lib已添加到链接器库列表中。没有问题。 该程序已针对 VS2015 进行了彻底重新审视,将适当的 ODBC 函数更改为 3.x 版本,并允许使用 UNICODE 或 ANSI 字符集的 32 或 64 位二进制文件。 最近的文档建议在使用 sqlncli.h 函数时使用 sqlncli11.lib 标头和 bcp_xxxx: #include <sql.h> #include <sqlext.h> #define _SQLNCLI_ODBC_ #ifdef _WIN64 #include "C:\Program Files\Microsoft SQL Server\110\SDK\Include\sqlncli.h" #else #include "C:\Program Files (x86)\Microsoft SQL Server\110\SDK\Include\sqlncli.h" #endif 我按照建议做了,然后......崩溃了。 然后我链接回odbcbcp.lib,它就像一个魅力。 于是,我开始搜索如何使用sqlncli11.lib,发现ODBC连接字符串应该包含Driver=SQL Server Native Client 11.0。 简而言之: - (1) Driver=SQL Server 与 odbcbcp.lib 有效 - (2) Driver=SQL Server 与 sqlncli11.lib 使 bcp_init() 崩溃 - (3) Driver=SQL Server Native Client 11.0 与 odbcbcp.lib 使 bcp_init() 失败(返回 FAIL=0) - (4) Driver=SQL Server Native Client 11.0 与 sqlncli11.lib 有效。 选项(1)和(4)有效。 但我也发现使用选项(4)可以使查询运行得更快! 所以我会保留最后一张。 希望这有帮助。 之前的答案很完美,将其扩展到 ODBC 13,17 & 18 。 为了使其正常工作,LIB / Include 文件应与所使用的 ODBC 驱动程序匹配。 在 SQLServerClientSDK\ODBC***\SDK 下,其中 *** 是版本( 130 、 170 或 180 )。你会找到 msodbcsqlXX.lib,其中 xx 是 13,17, 18 对于包含文件,请使用 msodbcsql.h 而不是 odbcss.h / odbcinst.h 在连接字符串中,您可以使用 DNS=Name ,系统将检测底层驱动程序信息。 重要的部分是 ODBC 版本与 LIB/Include 文件相同,并且 C++ 代码与正确版本的 LIB 文件链接。 我找不到解决方案的缺点是必须为每个 ODBC 版本编译 dll / exe。 希望这会有所帮助。 谢谢,
ODBC:错误 [08001] - 尝试在 Power BI 中连接 PostgreSQL
我尝试在 Power BI 中连接托管在 Google Cloud 上的 PostgreSQL 数据库,但没有成功。首先,我在 power bi 中使用本机连接 postgresql,之后尝试与 ODBC 连接,返回一个
使用 Instant Client 连接到 SQL Server 中的链接服务器 (Oracle)
我需要使用 MS SQL Server (2019) 链接服务器连接到远程数据库 (Oracle)。到目前为止我做了什么: 在 SQL 所在的计算机上安装了 Oracle Instant Client x64 和 ODBC 驱动程序
[驱动程序管理器]无法打开 lib '/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.9.so.1.1'
当我跑步时 $ python manage.pyspectdb --database=mssql_database 我有以下错误 django.db.utils.Error: ('01000', "[01000] [unixODBC][驱动程序管理器]无法打开 lib '/opt/microsoft/