简体   繁体   English

[Microsoft] [ODBC驱动程序管理器]找不到数据源名称,未指定默认驱动程序

[英][Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

I am trying to connect SQL Server in C++ using below code but i am getting the same error "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified" 我正在尝试使用以下代码在C ++中连接SQL Server,但出现相同的错误“ [[Microsoft] [ODBC Driver Manager]数据源名称未找到,未指定默认驱动程序”

SQLHANDLE sqlenvhandle;    
SQLHANDLE sqlconnectionhandle;
SQLHANDLE sqlstatementhandle;
SQLRETURN retcode;

do
{
    if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &sqlenvhandle))
        break;

    if(SQL_SUCCESS!=SQLSetEnvAttr(sqlenvhandle,SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0)) 
        break;

    if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_DBC, sqlenvhandle, &sqlconnectionhandle))
        break;

    SQLWCHAR retconstring[1024];
    switch(SQLDriverConnect (sqlconnectionhandle, NULL, 
        (SQLWCHAR*)"DRIVER={SQL Server};SERVER=(IPADDRESS\\SQLEXPRESS);DATABASE=test;UID=sa;PWD=abcd$1234;",
        SQL_NTS, retconstring, 1024, NULL,SQL_DRIVER_NOPROMPT))
    {
    case SQL_SUCCESS_WITH_INFO:
        //show_error(SQL_HANDLE_DBC, sqlconnectionhandle);
        retcode = 0;
        break;
    case SQL_INVALID_HANDLE:
    case SQL_ERROR:
        //show_error(SQL_HANDLE_DBC, sqlconnectionhandle);
        SQLWCHAR sqlstate[1024];
        SQLWCHAR message[1024];
        if(SQL_SUCCESS == SQLGetDiagRec(SQL_HANDLE_DBC, sqlconnectionhandle, 1, sqlstate, NULL, message, 1024, NULL))
        {
            retcode = -1;
            break;
        }
    default:
        break;
    }

    if(retcode == -1)
        break;

    if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_STMT, sqlconnectionhandle, &sqlstatementhandle))
        break;

    if(SQL_SUCCESS!=SQLExecDirect(sqlstatementhandle, (SQLWCHAR*)"select * from testtable", SQL_NTS))
    {
        //show_error(SQL_HANDLE_STMT, sqlstatementhandle);

        break;
    }
    else
    {
        char name[64];
        char address[64];
        int id;
        while(SQLFetch(sqlstatementhandle)==SQL_SUCCESS)
        {
            SQLGetData(sqlstatementhandle, 1, SQL_C_ULONG, &id, 0, NULL);
            SQLGetData(sqlstatementhandle, 2, SQL_C_CHAR, name, 64, NULL);
            SQLGetData(sqlstatementhandle, 3, SQL_C_CHAR, address, 64, NULL);
        }
    }
}
while(FALSE);
SQLFreeHandle(SQL_HANDLE_STMT, sqlstatementhandle );
SQLDisconnect(sqlconnectionhandle);
SQLFreeHandle(SQL_HANDLE_DBC, sqlconnectionhandle);
SQLFreeHandle(SQL_HANDLE_ENV, sqlenvhandle);

Current configuration is below: 当前配置如下:

  • SQL Service is running. SQL服务正在运行。
  • TCP/IP is also Enabled. TCP / IP也已启用。
  • System DNS Name is Set to "SQL Server" in ODBC. 在ODBC中,系统DNS名称设置为“ SQL Server”。
  • ODBC Source administrator target is "%windir%\\System32\\odbcad32.exe". ODBC Source管理员目标是“%windir%\\ System32 \\ odbcad32.exe”。
  • Tried to replace connection string with IP Address and added port 1433 also. 尝试用IP地址替换连接字符串,并还添加了端口1433。

but getting same error for all these settings. 但是对于所有这些设置都会遇到相同的错误。

Please let me know if i am missing anything or do i need to change my connection string or if there is any other way to connect SQL Server in C++. 请让我知道我是否丢失任何东西,或者是否需要更改我的连接字符串,或者是否有任何其他方法可以使用C ++连接SQL Server。

I have just added the _T in the connection string argument and it worked. 我刚刚在连接字符串参数中添加了_T,并且它起作用了。

(SQLWCHAR*)_T("DRIVER={SQL Server};SERVER=(IPADDRESS\\SQLEXPRESS); 
DATABASE=test; UID=sa;PWD=abcd$1234;")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Unicode SQLDriverConnectW(): [unixODBC][Driver Manager]未找到数据源名称,且未指定默认驱动程序 - Unicode SQLDriverConnectW(): [unixODBC][Driver Manager]Data source name not found, and no default driver specified SQL Server-找不到数据源名称,也未指定默认驱动程序 - SQL Server - data source name not found and no default driver specified Microsoft Access ODBC 驱动程序管理器功能序列错误 - Microsoft Access ODBC Driver Manager Function sequence error 消息:[unixODBC] [驱动程序管理器]无法打开lib“ MySQL ODBC 5.1驱动程序”:找不到文件nSQLSTATE:01000 - Message: [unixODBC][Driver Manager]Can't open lib 'MySQL ODBC 5.1 Driver' : file not foundnSQLSTATE: 01000 未加载 Qt ODBC 驱动程序 - Qt ODBC driver not loaded 编写ODBC驱动程序的替代方法 - Alternatives to writing an ODBC driver 运行select语句时,Firebird ODBC驱动程序数据被截断 - Firebird ODBC driver data truncated while running select statement 在未安装驱动程序的情况下连接ODBC - Connect ODBC without driver installed QODBCResult :: exec:无法执行语句:“ [Microsoft] [ODBC SQL Server驱动程序] COUNT字段不正确或语法错误 - QODBCResult::exec: Unable to execute statement: "[Microsoft][ODBC SQL Server Driver]COUNT field incorrect or syntax error 找到但未加载MYSQL驱动程序 - MYSQL driver found but not loaded
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM