首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL ODBC - SQL错误

SQL ODBC - SQL错误
EN

Stack Overflow用户
提问于 2017-02-07 22:16:54
回答 1查看 453关注 0票数 0

我使用的是sql server 2014 ODBC数据库,我的程序是用visual studio c++编写的。我想将我的c++程序与sql server2014数据库集成在一起,以执行一些简单的插入和检索操作。

我编写了一个简单的测试来测试sql服务器和我的程序之间的连接。但是,我的程序的输出显示有一个sql错误。Retcode返回-1。

敬请指教。

我的程序的输出如下所示

我的代码如下:

代码语言:javascript
运行
复制
#include "stdafx.h"

#include <string>
#include <iostream>
#include <sstream>

#include <sqltypes.h>
#include <sql.h>
#include <sqlext.h>

RETCODE retrieveRc;
HENV retrieveHenv;
HDBC retrieveHdbc;
HSTMT retrieveHstmt;

using namespace std;

void RetrieveConnectToDatabase();
void DisplayResults();

int _tmain(int argc, _TCHAR* argv[])
{

    RetrieveConnectToDatabase();
    cin.get();
    return 0;
}

void RetrieveConnectToDatabase()
{

    cout << "Attempting Database Connection for Retrieving " << endl;

    //Set Environment Handle
    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &retrieveHenv);

    //Set ODBC Driver Version
    SQLSetEnvAttr(retrieveHenv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);

    //Set Connection Handle
    SQLAllocHandle(SQL_HANDLE_DBC, retrieveHenv, &retrieveHdbc);

    //Connect to Database
    retrieveRc = SQLConnect(retrieveHdbc, L"database", SQL_NTS, L"", SQL_NTS, L"", SQL_NTS);

    SQLAllocHandle(SQL_HANDLE_STMT, retrieveHdbc, &retrieveHstmt);

    if ((retrieveRc != SQL_SUCCESS) && (retrieveRc != SQL_SUCCESS_WITH_INFO)) 
    {
        cout << "Cannot open database -- make sure ODBC is confugured properly." << endl;
        SQLFreeConnect(retrieveHdbc);
        SQLFreeEnv(retrieveHenv);
        cout << "Press ENTER to continue." << endl;
    }

    else 
    {
        cout << "Connected -- ODBC is confugured properly." << endl;
        string queryDatabase;
        stringstream usernameQueryStr;

        usernameQueryStr << "SELECT * FROM [trackmanagementdatabase].[dbo].[user];";
        queryDatabase = usernameQueryStr.str();
        wchar_t* p = new wchar_t[1000];

        for (string::size_type i = 0; i < usernameQueryStr.str().size(); i++) 
        {
            p[i] = queryDatabase[i];
        }

        if (sizeof(queryDatabase) != 0) 
        {
            RETCODE retrieveRetCode;
            SQLSMALLINT sNumResults;

            // Execute the query
            //wzsInput contains sql statement

            retrieveRetCode = SQLExecDirect(retrieveHstmt, p, SQL_NTS);
            cout << "retrieveRetCode: " << retrieveRetCode << endl;

            switch (retrieveRetCode) 
            {
            case SQL_SUCCESS_WITH_INFO: 
            {
            }
            case SQL_SUCCESS: 
            {

                // If this is a row-returning query, display
                // results
                SQLNumResultCols(retrieveHstmt, &sNumResults);

                //display result
                DisplayResults();

                if (sNumResults > 0) 
                {
                    DisplayResults();
                }
                else 
                {
                    cout << "SQL Success else" << endl;
                    SQLLEN cRowCount;
                    SQLRowCount(retrieveHstmt, &cRowCount);
                    cout << "cRowCount: " << cRowCount << endl;

                    if (cRowCount >= 0)
                    {
                        wprintf(L"%Id %s affected\n",
                            cRowCount,
                            cRowCount == 1 ? L"row" : L"rows");
                    }
                }
                break;
            }

            case SQL_ERROR: 
            {
                break;
            }

            default:
                fwprintf(stderr, L"Unexpected return code %hd!\n", retrieveRetCode);
                cout << "it came in here default" << endl;
            }
        }
    }
}

void DisplayResults()
{
}
EN

回答 1

Stack Overflow用户

发布于 2017-03-02 13:07:57

您需要检索SQLError状态和错误描述。你很有可能从那里算出这道题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42092128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档