C++ ODBC SQL Server 2008连接

Ela*_*rys 3 c++ visual-c++

我正在尝试从新创建的C++应用程序连接到本地SQL Server 2008实例.我还在学习C++,所以我可能会遗漏一些明显的东西.

我正在使用Microsoft Visual Studio 2010,创建一个Win32控制台应用程序作为空白项目并自己添加main.cpp.

SQL Server实例已启动并运行,我可以使用SQL或集成身份验证从其他计算机连接到它,我甚至可以使用.net对象连接我的C#应用​​程序.

但是在C++中,我无法获得连接,它始终报告为失败.

到目前为止,我的代码如下

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

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=(local)\DB1;DATABASE=master;UID=sa;PWD=password;", 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";
    }

    std::cin.get();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的基础是看到一些在线示例,例如http://www.easysoft.com/developer/languages/c/odbc_tutorial.html

总是,我的代码进入了无法连接块,即使有效凭据也是如此.并尝试使用上面链接文章中的extract_error,根本不会产生任何错误消息.

我在这做错了什么?谢谢

ild*_*arn 5

从评论中重新发布以便可以关闭问题:

  • (SQLWCHAR*)是一个明显的错误.请尝试L将字符串文字设为字符串文字.

  • 默认连接超时为60秒,因此您可能正在遇到此问题.检查SQL协议设置,如果配置为在本地使用TCP,请检查防火墙设置.