我正在使用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
感谢所有事情:)
答案 0 :(得分:0)
SQLExecDirect可以返回除SQL_SUCCESS之外的值。例如,USE
通常会返回SQL_SUCCESS_WITH_INFO
以指示语句成功,并返回信息/警告消息(“已更改的数据库上下文”)。如果需要,可以使用SQLGetDiagRec
检索邮件。
我建议您至少考虑所有“快乐路径”ODBC函数调用返回值并适当处理每个值,在返回意外值时引发诊断信息异常。