试图通过ODBC和C连接到SQL Server 2000数据库,SQLConnect出现问题
使用C连接SQL Server 2000数据库时遇到问题。该程序可以编译,但连接到数据库时出错。更具体地说,“resultado”的值为-1。试图通过ODBC和C连接到SQL Server 2000数据库,SQLConnect出现问题,c,sql-server,database,odbc,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;
代码如下:
#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;
}
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
SQLHANDLE环境句柄;
SQLHANDLE连接句柄;
//连接到数据库
SQLAllocHandle(SQL\u HANDLE\u ENV、SQL\u NULL\u HANDLE和environmentHandle);
SQLSetEnvAttr(environmentHandle,SQL_ATTR_ODBC_版本,(void*)SQL_OV_ODBC3,0);
SQLAllocHandle(SQL\u句柄\u DBC、环境句柄和连接句柄);
SQLSetConnectAttr(connectionHandle,SQL\u登录\u超时,(void*)5,0);
SQLCHAR serverName[60];strcpy((char*)serverName,“SERVERSUCURSAL\0”);
SQLCHAR用户名[60];strcpy((char*)用户名,“sa\0”);
SQLCHAR密码[60];strcpy((char*)密码,“syntelsol\0”);
SQLRETURN resultado=SQLConnect(connectionHandle,serverName,strlen((char*)serverName),userName,
strlen((char*)用户名)、密码、strlen((char*)密码);
//判决书
SQLHANDLE语句句柄;
//自由拉斯提尔斯酒店
SQLDisconnect(connectionHandle);
SQLFreeHandle(SQL\u HANDLE\u DBC,connectionHandle);
SQLFreeHandle(SQL\u HANDLE\u ENV,environmentHandle);
返回0;
}
这就是数据库的外观。服务器名称可能是SERVERSUCURSAL:作为ServerName传递给SQLConnect的字符串应该是需要在ODBC管理员中创建的数据源(DSN)的名称。它不能只是SQL Server计算机/数据库等的名称。请打开ODBC Administrator并为MS SQL Server创建指向您的服务器的数据源
顺便说一句,您也不需要用额外的NUL字符来结束所有字符串-这并不是说它在这里有什么不同。谢谢,这很管用。我能知道为什么我不需要NUL字符来标记名称的结尾吗?