我无法使用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
答案 0 :(得分:1)
作为ServerName传递给SQLConnect的字符串应该是您需要在ODBC管理器中创建的数据源(DSN)的名称。它不能只是SQL Server机器/数据库的名称等。打开ODBC Administrator并为指向服务器的MS SQL Server创建数据源。
顺便说一下,你不需要用额外的NUL字符来结束你的所有字符串 - 而不是它在这里有所不同。