SQLEXECTIRECT命令无法使用相同的查询

SQLExecDirect command is not working same queries

本文关键字:查询 命令 SQLEXECTIRECT      更新时间:2023-10-16

我正在工作Visual Studio 2017和SQL Server 2017。

我想做的就是使用C 创建一个查询,它将在SQL Server上运行。

if (SQL_SUCCESS != SQLExecDirect(sqlStmtHandle, (SQLWCHAR*)L"SELECT @@VERSION", SQL_NTS)) {
    cout << "Database Already Exits or Cannot Created";
    cout << "n";
    goto COMPLETED;
}
else {
    cout << "Success !!!";
    cout << "n";
}

我使用此示例:https://www.techhowtos.com/programming/how-to-connect-to-sql-server-server-from-visual-visual-c-plus-plus-plus/

但是,

if (SQL_SUCCESS != SQLExecDirect(sqlStmtHandle, (SQLWCHAR*)L"SELECT @@VERSION", SQL_NTS))

在这条线上,如果我写

if (SQL_SUCCESS != SQLExecDirect(sqlStmtHandle, (SQLWCHAR*)L"**USE database_name**", SQL_NTS))

if (SQL_SUCCESS != SQLExecDirect(sqlStmtHandle, (SQLWCHAR*)L"**SELECT * FROM sampletable**", SQL_NTS))

if (SQL_SUCCESS != SQLExecDirect(sqlStmtHandle, (SQLWCHAR*)L"INSERT INTO sampletable (one,two,three) VALUES (1,2,3)", SQL_NTS))

此查询不起作用。

但是,

如果我正在运行此查询(一些示例);

if (SQL_SUCCESS != SQLExecDirect(sqlStmtHandle, (SQLWCHAR*)L"**CREATE DATABASE blablabla**", SQL_NTS))

if (SQL_SUCCESS != SQLExecDirect(sqlStmtHandle, (SQLWCHAR*)L"**DELETE DATABASE blablabla**", SQL_NTS))

查询正在工作。

我有2个功能

void run_query(string query);
void create_query();

创建查询函数正常工作。生成查询,此查询转到run_query。

我应该在run_query()函数中做什么,以便每个创建的查询都可以吗?

我在这里的所有代码:https://paste.laravel.io/7c693fdb-2dc9-41cc-b183-6e45fd3d9b6d

感谢一切:)

sqlexecdirect在语句成功时可以返回sql_success以外的值。例如,USE通常会返回SQL_SUCCESS_WITH_INFO,以指示声明成功,并且返回信息/警告消息("更改数据库上下文")。如果需要,可以使用SQLGetDiagRec检索消息。

我建议您至少考虑所有"快乐路径" ODBC函数调用返回值并适当处理每个值,并在返回意外值时提高例外情况,并带有诊断信息。