gpt4 book ai didi

c++ - 在 Visual Studio C++ 中执行简单 SQL 查询时出错

转载 作者:太空宇宙 更新时间:2023-11-04 13:19:27 25 4
gpt4 key购买 nike

我最近刚刚设法从 Visual Studio C++ 应用程序建立到我的 SQL Server 的连接,但我无法使我的语句按预期工作。

我有一些在 SQL Server 中创建中大型脚本的经验,但出于某种原因,下面的代码只是给我错误,而不是让我获取数据并处理它。

正如我提到的,连接没有问题,因为我在检查连接状态时没有发现任何错误。

这是我的代码:

#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <sqltypes.h>
#include <sql.h>
#include <sqlext.h>
using namespace std;

void show_error(unsigned int handletype, const SQLHANDLE& handle)
{
SQLWCHAR sqlstate[1024];
SQLWCHAR message[1024];
if (SQL_SUCCESS == SQLGetDiagRec(handletype, handle, 1, sqlstate, NULL, message, 1024, NULL))
cout << "Message: " << message << "\nSQLSTATE: " << sqlstate << endl;
}

int main() {

SQLHENV env;
SQLHDBC dbc;
SQLHSTMT stmt;
SQLRETURN ret;
SQLSMALLINT columns;
int row = 0;

/* Allocate an environment handle */
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
/* We want ODBC 3 support */
SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0);
/* Allocate a connection handle */
SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);

/* Connect to the DSN */
SQLDriverConnectW(dbc, NULL, L"DRIVER={SQL Server};SERVER=DESKTOP-L5OT4OH\\SQLEXPRESS;DATABASE=Easier;UID=geo;PWD=password123;", SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);

/* Check for success */
if (SQL_SUCCESS != SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt))
{
std::cout << "Failed to connect";
}
if (SQL_SUCCESS != SQLExecDirect(stmt, (SQLWCHAR*)" USE Easier select personid from dbo.TPERSON", SQL_NTS)) {
show_error(SQL_HANDLE_STMT, stmt);
}
else {
int id;
while (SQLFetch(stmt) == SQL_SUCCESS) {
SQLGetData(stmt, 1, SQL_C_ULONG, &id, 0, NULL);
cout << id << endl;
}
}

return 0;
}

据我了解我的代码

  • 通过 ODBC(?) 建立与本地 SQL Server 数据库的连接
  • 检查所述连接
  • 尝试创建和执行非常基本的 SQL 查询(在任何人询问之前,它确实在我的 SQL 管理器中工作)。
  • 遍历获取的数据以解析数据并将数据发送到 cout。

你们能不能看看我可能犯了什么样的错误?

如果有关于如何使用 C++ 应用程序设置 SQL Server 的任何易于理解的指南,我就不会问这么简单的问题,但我完全找不到。

编辑:

show_error 给出以下错误信息:

Message: 0018ED9C

SQLSTATE: 0018F5A4

最佳答案

似乎 SQLExecDirect 不喜欢我明确地使用“USE Easier”这一事实,因为它已经在连接字符串中声明了。

关于c++ - 在 Visual Studio C++ 中执行简单 SQL 查询时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35828765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com