我正在尝试从新创建的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,根本不会产生任何错误消息.
我在这做错了什么?谢谢
从评论中重新发布以便可以关闭问题:
(SQLWCHAR*)是一个明显的错误.请尝试L将字符串文字设为宽字符串文字.
默认连接超时为60秒,因此您可能正在遇到此问题.检查SQL协议设置,如果配置为在本地使用TCP,请检查防火墙设置.
| 归档时间: |
|
| 查看次数: |
11809 次 |
| 最近记录: |