SQLExecDirect命令不能使用相同的查询

时间:2017-09-20 11:47:58

标签: c++ sql-server

我正在使用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-from-visual-c-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

感谢所有事情:)

1 个答案:

答案 0 :(得分:0)

当语句成功时,

SQLExecDirect可以返回除SQL_SUCCESS之外的值。例如,USE通常会返回SQL_SUCCESS_WITH_INFO以指示语句成功,并返回信息/警告消息(“已更改的数据库上下文”)。如果需要,可以使用SQLGetDiagRec检索邮件。

我建议您至少考虑所有“快乐路径”ODBC函数调用返回值并适当处理每个值,在返回意外值时引发诊断信息异常。