Попытка подключиться к базе данных SQL Server 2000 через ODBC с C, проблемы на SQLConnect - PullRequest
0 голосов
/ 02 февраля 2012

У меня проблемы с подключением к базе данных SQL Server 2000 с использованием C. Программа компилируется, но я получаю сообщение об ошибке при подключении к базе данных. В частности, "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 Ответ

1 голос
/ 02 февраля 2012

Строка, которую вы передаете как имя_сервера SQLConnect, должна быть именем источника данных (DSN), который необходимо создать в администраторе ODBC.Это не может быть просто имя вашего компьютера / базы данных SQL Server и т. Д. Откройте Администратор ODBC и создайте источник данных для MS SQL Server, который указывает на ваш сервер.

Кстати, вам не нужно завершать все своистроки с дополнительным символом NUL - не то, чтобы это имело значение.

...