尝试通过ODBC与C连接到SQL Server 2000数据库,SQLConnect上的问题

时间:2012-02-02 16:10:04

标签: c sql-server database odbc

我无法使用C连接到SQL Server 2000数据库。程序编译但连接到数据库时出错。更具体地说,“resultado”的值为-1 这是代码:

#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <sqlext.h>

int main(int argc, char *argv[])
{
    SQLHANDLE environmentHandle;
    SQLHANDLE connectionHandle;

    //Connecting to the Database
    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &environmentHandle);
    SQLSetEnvAttr(environmentHandle, SQL_ATTR_ODBC_VERSION, (void*) SQL_OV_ODBC3, 0);
    SQLAllocHandle(SQL_HANDLE_DBC, environmentHandle, &connectionHandle);
    SQLSetConnectAttr(connectionHandle, SQL_LOGIN_TIMEOUT,(void*)  5, 0);
    SQLCHAR serverName[60]; strcpy((char*) serverName,"SERVERSUCURSAL\0");
    SQLCHAR userName[60];   strcpy((char*) userName, "sa\0");
    SQLCHAR passWord[60];   strcpy((char*) passWord, "syntelsol\0");
    SQLRETURN resultado = SQLConnect(connectionHandle,serverName, strlen((char*)serverName), userName, 
         strlen((char*)userName), passWord, strlen((char*)passWord));

    //Creamos las sentencias
    SQLHANDLE statementHandle; 

    //Liberamos las handles 
    SQLDisconnect(connectionHandle);
    SQLFreeHandle(SQL_HANDLE_DBC, connectionHandle);
    SQLFreeHandle(SQL_HANDLE_ENV, environmentHandle);

    return 0;
}

这就是数据库的样子。服务器名称可能是SERVERSUCURSAL:
http://i.imgur.com/PhVIa.png
Databases

1 个答案:

答案 0 :(得分:1)

作为ServerName传递给SQLConnect的字符串应该是您需要在ODBC管理器中创建的数据源(DSN)的名称。它不能只是SQL Server机器/数据库的名称等。打开ODBC Administrator并为指向服务器的MS SQL Server创建数据源。

顺便说一下,你不需要用额外的NUL字符来结束你的所有字符串 - 而不是它在这里有所不同。