odbc 相关问题

开放式数据库连接(ODBC)提供了用于访问数据库管理系统(DBMS)的标准软件接口。

R - odbc - 如何关闭数据库连接?

我能够很好地建立连接,但是我无法弄清楚如何在完成后关闭连接。 有什么建议吗? if (!require('odbc')) install.packages('odbc') 骗局&l...

回答 2 投票 0

4年后突然出现unixODBC][FreeTDS][SQL Server]无法连接数据源的错误

在过去四年中,我们一直在从共享 Linux 主机到 MS SQL 数据库建立 ODBC 连接,并且运行良好。上周末突然停了。不幸的是,这是

回答 1 投票 0

ODBC SQL Server 驱动程序登录超时已过期

我无法连接到 SQL 服务器 SQLExpress。几天前连接工作正常。 这就是我尝试连接的方式(我正在使用 Microsoft SQL Server Management Studio): 连接 = pyodbc。

回答 3 投票 0

odbc_prepare():SQLColAttribute 无法处理 SQL_DESC_OCTET_LENGTH:[S1C00] [TimesTen][TimesTen 18.1.4.42.0 CLIENT]驱动程序不支持

这是我的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

回答 0 投票 0

C# 中的 Redshift 查询超时

我在 AWS 上有一个 Redshift 实例。 我的应用程序在与 Redshift 集群位于同一区域的 EC2 上作为 Windows 服务运行。我有一个查询,平均需要约 45 秒和红移

回答 4 投票 0

为什么可以连接到 mysql,但 SSIS 源 odbc 组件中不显示列?

当我使用 SSIS 上的 odbc 源组件连接到 mysql 数据库时,它可以工作并显示表,但是当我选择表并转到列时,没有显示列。 我有 mysql 连接器网络 8.2 ...

回答 1 投票 0

GO SQL.CONN 总是卡在 conn.Close()

在go中我遇到了一个问题,sql.DB的连接池堆积了如此多的连接,以至于达到了odbc驱动程序的限制。连接应该自动关闭,但这从来没有......

回答 1 投票 0

如何搜索包含子字符串的行?

如果我每次用户提交表单时都在 ODBC 数据库中存储 HTML TEXTAREA,那么用于检索 1) 包含给定子字符串的所有行 2) 不包含给定子字符串的所有行(以及 .. .

回答 3 投票 0

Stata + ODBC 驱动程序需要频繁登录

我必须为 Azure 创建 Windows VM 模板,以便人们可以创建该模板的实例。模板和实例创建得很好,没有问题。 在我已经安装了 Stata 的虚拟机中...

回答 1 投票 0

无法使用VBA从Excel 64位连接到Mysql

我尝试迁移以前在 Windows 10 下使用 32 位 ODBC 驱动程序运行的 Excel 工作表。 看来我的问题并不新鲜,因为我读了几个有关此问题的问题。 我在 Windows 11 下。我运行

回答 1 投票 0

Microsoft ODBC 无法创建有效句柄

我正在使用 Microsoft 的 ODBC 驱动程序将 C++/Linux 应用程序连接到远程运行的 SQL Server 数据库,当我尝试连接到数据库时,调用失败并显示 SQL_INVALID_HANDLE。重新...

回答 5 投票 0

bcp_init 返回访问冲突

我正在尝试使用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。 希望这会有所帮助。 谢谢,

回答 2 投票 0

ODBC:错误 [08001] - 尝试在 Power BI 中连接 PostgreSQL

我尝试在 Power BI 中连接托管在 Google Cloud 上的 PostgreSQL 数据库,但没有成功。首先,我在 power bi 中使用本机连接 postgresql,之后尝试与 ODBC 连接,返回一个

回答 1 投票 0

使用 Instant Client 连接到 SQL Server 中的链接服务器 (Oracle)

我需要使用 MS SQL Server (2019) 链接服务器连接到远程数据库 (Oracle)。到目前为止我做了什么: 在 SQL 所在的计算机上安装了 Oracle Instant Client x64 和 ODBC 驱动程序

回答 2 投票 0

[驱动程序管理器]无法打开 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/

回答 3 投票 0

SQLSTATE[28000]:[Microsoft][SQL Server 的 ODBC 驱动程序 17][SQL Server]用户登录失败

我正在使用以下 PHP 连接文件来连接到我的 SQL Server 数据库。 我正在使用以下 PHP 连接文件来连接到我的 SQL Server 数据库。 <?php $servername = "..."; $username = "..."; $password = ""; $dbname = "..."; try { $conn = new PDO("sqlsrv:Server=$servername;Database=$dbname", $username, $password); echo "Connected to $dbname at $servername successfully."; $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $pe) { die ("Could not connect to the database $dbname :" . $pe->getMessage()); } ?> 我不断收到此错误: “SQLSTATE[28000]:[Microsoft][SQL Server 的 ODBC 驱动程序 17][SQL 服务器]用户 $username 登录失败”。 我已经下载了最新版本的 ODBC 17 和 18,我希望这可以解决此问题,但事实并非如此。我的 SQL Server 身份验证也设置为 SQL Server 和 Windows 身份验证。 如果使用 laravel,在你的 .env 文件中: DB_CONNECTION=sqlsrv DB_HOST=DESKTOP-91MB9QU\TESTSQLSERVER DB_PORT= DB_DATABASE=laravel_test DB_USERNAME=sa DB_PASSWORD='mypassword' 你就可以使用它了。注意 DB_CONNECTION=sqlsrv 和 DB_HOST 的格式必须为“PC-name\SQL-server-name”,并且 DB_PORT 为空值。 您可以使用与纯php代码类似的方式。 我也有同样的问题,但是是在 C++ 中。它帮助我捕获另一个异常“CDBException”。 catch (CDBException* p) { cout << "Login failed!" << endl; } 对于你的代码,像这样 catch (CDBException $pe) { die ("Could not connect to the database"); } 也许它的异常名称相同,但至少应该有一个与我的相似的。 之后我的代码就起作用了。希望对你有帮助。

回答 2 投票 0

在 Excel 365 中找到和/或重新安装 MS Query 的链接

我有一个小型数据查询和分析团队,他们使用 Microsoft Query 从 ODBC 连接提取数据。我们正在运行 Microsoft 365 并利用 Excel 内的数据源。 ODBC 数据

回答 1 投票 0

“[unixODBC][驱动程序管理器]无法打开 lib '/usr/lib/x86_84-linux-gnu/odbc/libmyodbc8w.so':找不到文件”

完全不习惯linux所以请原谅。似乎我已经浏览了网上关于这个问题的每一篇文章,最后我终于来发表我自己的文章了。 我需要通过 ODBC 连接到 MySQL 数据库

回答 2 投票 0

Apache Ignite JDBC(可能是 ODBC 和瘦客户端)禁用设置不会阻止 JDBC 连接或查询

为了禁用通过 JDBC/ODBC/瘦客户端的访问,如文档中所述,我配置了 IgniteConfiguration#clientConnectorConfiguration 以设置 odbcEnabled、jdbcEnabled 和 ThinClientE...

回答 1 投票 0

如何在M1 mac上正确安装pyodbc和驱动程序

我有一台新的 M1 pro macbook,我正在尝试在我的机器上安装 pyodbc 和相关驱动程序。 到目前为止,我已经根据找到的说明通过自制程序和 ODBC 驱动程序安装了 unixodbc...

回答 7 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.