关于使用odbc api连sql server2000的问题

代码如下:

#include "stdafx.h"
#include "stdafx.h"
#include<sql.h>
#include<sqlext.h>
#include<sqltypes.h>
#include<odbcss.h>
#include <windows.h>
#include "gl\gl.h"
#include "gl\glu.h"
#include "gl\glaux.h"
#include "stdio.h"

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
SQLHENV m_hEnv;
SQLHDBC m_hDbc;
SQLRETURN m_sr;
m_sr=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&m_hEnv);
if(m_sr!=SQL_SUCCESS)
{ MessageBox(NULL,"分配环境句柄失败","错误",MB_OK|MB_ICONEXCLAMATION);

return FALSE;
}
m_sr=SQLSetEnvAttr(m_hEnv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,0);
if(m_sr!=SQL_SUCCESS)
{ MessageBox(NULL,"设置环境属性失败","错误",MB_OK|MB_ICONEXCLAMATION);

return FALSE;
}
m_sr=SQLAllocHandle(SQL_HANDLE_DBC,m_hEnv,&m_hDbc);
if(m_sr!=SQL_SUCCESS)
{ MessageBox(NULL,"分配连接句柄失败","错误",MB_OK|MB_ICONEXCLAMATION);

return FALSE;
}
m_sr=SQLSetConnectAttr(m_hDbc,SQL_ATTR_LOGIN_TIMEOUT,(void*)5,0);

if(m_sr!=SQL_SUCCESS)
{ MessageBox(NULL,"设置连接属性失败","错误",MB_OK|MB_ICONEXCLAMATION);

return FALSE;
}

m_sr=SQLConnect(m_hDbc,(SQLCHAR*)"LocalServer",SQL_NTS,(SQLCHAR*) "sa",SQL_NTS,(SQLCHAR*) "123456",SQL_NTS);

if(m_sr!=SQL_SUCCESS)
{ MessageBox(NULL,"连接数据源失败","错误",MB_OK|MB_ICONEXCLAMATION);

return FALSE;
}

return 0;
}
其中m_sr=SQLConnect(m_hDbc,(SQLCHAR*)"LocalServer",SQL_NTS,(SQLCHAR*) "sa",SQL_NTS,(SQLCHAR*) "123456",SQL_NTS);
总是连接不成功,为什么呢??

首先,这样检查返回值if(m_sr!=SQL_SUCCESS)是不对的,应该这样if(!SQL_SUCCEEDED(m_str)),因为返回值可能是SQL_SUCCESS也可能是SQL_SUCCESS_WITH_INFO,两个值都是表示连接成功。
其次,你要保证LocalServer这个数据源是有效的,在运行里输入odbcad32,在系统DSN里配置一下LocalServer,最后让你“测试数据源”要保证测试成功。才可以在程序里连接。
经过以上两个步骤,你的程序在我机器上已经可以连接成功,我添加一段执行SQL语句的程序也执行OK。
温馨提示:内容为网友见解,仅供参考
无其他回答

一个关于用ODBC联接SQL SERVER 2000出错的问
在处理用ODBC连接SQL SERVER 2000遇到的问题时,首先尝试在两台机器上运行相同的代码,以排除代码本身的问题。如果代码在两台机器上均未解决问题,需要进一步排查其他可能的因素。其中一个可能的原因是防火墙设置。在一台机器上,你可能已经打开了端口,从而允许访问,但另一台机器如果没有开启相应的端口,...

关于使用odbc api连sql server2000的问题
首先,这样检查返回值if(m_sr!=SQL_SUCCESS)是不对的,应该这样if(!SQL_SUCCEEDED(m_str)),因为返回值可能是SQL_SUCCESS也可能是SQL_SUCCESS_WITH_INFO,两个值都是表示连接成功。其次,你要保证LocalServer这个数据源是有效的,在运行里输入odbcad32,在系统DSN里配置一下LocalServer,最后让你“测...

用ODBC连接SQL Server 2000 不成功
1. 检查数据库服务是否启动 2. 检查服务器上的防火墙情况 3. 检查你的机器到服务器的网络是否畅通 4. 检查你配置odbc的机器名(ip地址)等内容是否正确

怎样把VC和SQL Server 2000连接起来
1:在SQL中建立数据库(如meg),在数据库中建立表格(如stu);2:在保证SQL服务器启动的情况之下,在控制面板的ODBC控制器中添加一个SQL驱动的数据源(如defau,服务器名在SQL服务管理器里找,更改默认的数据库为msg),测试连接成功即可;3:在VC中新建一个MFC程序,选择一个 single document;4:...

如何解决 SQL Server 2000 中的连接问题
解决连接问题在SQL Server 2000 中可能会注意到的大多数连接问题都是由 TCP\/IP 的问题或 Windows 身份认证的问题引起,或者由两者共同引起。重要说明:在开始解决 SQL Server 2000 的连接问题之前,请确认 MSSQLServer 服务已在运行 SQL Server 的计算机上启动。1、验证 DNS 设置域名系统 (DNS) 中的名称解析过程用于...

home版xp odbc连接sql server 2000验证无法通过,提示:sqlstate:28000...
一、Windows验证模式。设置为该模式的话,服务器机器要允许客户端的机器能访问。也就是说你服务端机器的用户管理中,需有要客户端的用户名。假如你的客户端机器登录名为test,那么服务端机器的用户列表中,需要有test用户名 二、混合模式。设置为该模式的话,你在客户端可以使用SQL数据库用户名登录(请...

ODBC数据源连接不上SQL SERVER 2000
你填的是SQL名吗?用IP吧。本机可以用127.0.0.1 二,连SQL非得用ODBC吗?这种方式并不好。用OLEDB吧。

ODBC不能连接部分sql2000数据库,急求解决办法(送高分)。
1、先确定数据已在始运行中,而且没有防火墙。不行往下看。2、工具-〉选项-〉高级->登录(连接)超时设置成0.如果不行在往下看。3、用记事本打开 系统目录\\WINNT\\system32\\drivers\\etc 下的hosts文件 在里面添加 数据库的IP 和 数据库的机器名,保存试试看,不行在往下看。在不行我也没有办法...

sql 2000 odbc数据源配置时 显示连接失败怎么回事?
sql server 连接地址写错了,或者服务器tcp\/ip连接未开启,或者有防火墙

win7 64位 安装sql server 2000出现问题。。。
解决方法:运行“C:\\Windows\\SysWOW64\\odbcad32.exe” ,利用这个32位的“数据源(ODBC)”来创建SQL Server 2000 的JDBC连接即可。4、启动程序服务,后台异常报错:“[MICROSOFT][ODBC SQLSERVER DRIVER][SQL SERVER]用户„XXX\\XXX'登录失败”“使用Windows身份验证 "连接 SQL Server 失败...

相似回答
大家正在搜