数据库连接失败?

Butterfly0202 2005-11-11 02:19:04
我做了个管理系统,用SQL server做的数据库,VC++6。0做的界面。在连接数据库时连接失败
打开数据库的程序是:
CString str;
str="driver={SQL Server};Server=localhost;DATABASE=zhu";
m_pConnection->Open(str.AllocSysString(),"zhu","zhu",adModeUnknown);
数据库的服务器名和密码都是正确的
...全文
248 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yayaniuniu502 2005-11-20
  • 打赏
  • 举报
回复
你看看你的DNS建立对了吗?第一种也应该没问题的
Butterfly0202 2005-11-16
  • 打赏
  • 举报
回复
采用不通过DSN对SQL SERVER数据库进行连接:
CString str;
str="driver={SQL Server};Server=localhost;DATABASE=zhu";
m_pConnection->Open("driver={SQL Server}; Server=127.0.0.1; DATABASE=zhu; UID=zhu; PWD=zhu","","",adModeUnknown);
连接成功了
liuwei200000 2005-11-15
  • 打赏
  • 举报
回复
//在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
//因为它有时会经常出现一些想不到的错误
try
{
m_pConnection->Open(buf,"","",adModeUnknown);
//return TRUE;
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败!");
return FALSE;
}
liuwei200000 2005-11-15
  • 打赏
  • 举报
回复
MFC ADO 编程

//在"stdafx.h"中 加入ADO支持库
#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF")

//在APP初始化COM,创建ADO连接等操作
AfxOleInit();
m_pConnection.CreateInstance(__uuidof(Connection));
char buf[200];
注意:
SQL Server 数据库的连接方式
sprintf(buf,"Driver={SQL Server};Server=%s;Option=3;DATABASE=%s;UID=sa;PWD=%s;","192.168.1.217","数据库","密码");
dingpiao 2005-11-11
  • 打赏
  • 举报
回复
DWORD GetLastError(VOID)
返回什么啊
fairyprince 2005-11-11
  • 打赏
  • 举报
回复
你用这个类连接试试
fairyprince 2005-11-11
  • 打赏
  • 举报
回复
class CADOConnection
{
public:

CADOConnection();
virtual ~CADOConnection();
BOOL ComInit();
void ComUnInit();
BOOL ConnectToDB(LPSTR pConnString, /* 连接字串 */ LPSTR pUserId ,/* 用户名 */ LPSTR pUserPassword , /* 用户密码 */ \
enum ConnectOptionEnum ConnectOption); //连接参数
void ErrorFunc(_com_error *pComError);
void SetCursorLocation(enum CursorLocationEnum Val);
public:
void Close();
_ConnectionPtr GetConnectionPtr();
long TimeOut;
char lpComErrorStr[1024];
char lpErrorDescription[512];
long errornumber;

private:
_ConnectionPtr m_Conn; /*定义Connection对象*/

};
fairyprince 2005-11-11
  • 打赏
  • 举报
回复
CADOConnection::CADOConnection()
{
m_Conn=NULL;
TimeOut=15;
}

CADOConnection::~CADOConnection()
{
if(m_Conn!=NULL)
{
ComUnInit();
}
}

BOOL CADOConnection::ComInit()
{

if FAILED(::CoInitialize(NULL)) // COM 初始化调用
{
CoUninitialize();
return FALSE;
}
return TRUE;
}

void CADOConnection::ComUnInit()
{
if(m_Conn!=NULL)
{
try{
m_Conn.Release();
}
catch(...)
{

}
}
m_Conn=NULL;
::CoUninitialize();
}

BOOL CADOConnection::ConnectToDB(LPSTR pConnString, /* 连接字串 */ LPSTR pUserId ,/* 用户名 */ LPSTR pUserPassword , /* 用户密码 */ \
enum ConnectOptionEnum ConnectOption) //连接参数
{
_ConnectionPtr ptrConn;
try
{
HRESULT hr = S_OK;// 默认返回值
// 创建一个连接实体
hr=ptrConn.CreateInstance(__uuidof(Connection));
// 设定连接等待的最大秒数,默认是15秒
ptrConn->ConnectionTimeout=TimeOut;
// 打开连接
//ptrConn->CursorLocation=adUseClient;
hr =ptrConn->Open(_bstr_t(pConnString),_bstr_t(pUserId),_bstr_t(pUserPassword),ConnectOption);
if(hr!=S_OK)return FALSE;
m_Conn=ptrConn;
return TRUE;
}
catch(_com_error pComError)
{
// 错误处理
ErrorFunc(&pComError);
return FALSE;
}
}


void CADOConnection::ErrorFunc(_com_error *pComError)
{

// COM 错误取得
lpComErrorStr[0]=0;
// 当执行COM功能的时候,如果出错,可以捕捉到_com_error的异常
sprintf(lpComErrorStr, "错误编号:%08lx 。 错误信息:%s 。错误源 :%s 。 错误描述:%s 。", \
pComError->Error(), /* 错误编号*/ pComError->ErrorMessage(),/* 错误信息 */(LPCSTR) pComError->Source(),/* 错误源 */ (LPCSTR) pComError->Description());// 错误描述
strcpy(lpErrorDescription,(LPCSTR) pComError->Description());
errornumber=pComError->Error();

// 通过上面的代码我们可以看出,_com_error对象中可以得到COM所有出错的信息
}

_ConnectionPtr CADOConnection::GetConnectionPtr()
{
return m_Conn;
}

void CADOConnection::Close()
{
try{
if(m_Conn!=NULL)
m_Conn->Close();
}
catch(...)
{

}
}

void CADOConnection::SetCursorLocation(enum CursorLocationEnum Val)
{
m_Conn->CursorLocation=Val;
}
快乐鹦鹉 2005-11-11
  • 打赏
  • 举报
回复
或者在连接之前调用CoInitialize(NULL);
快乐鹦鹉 2005-11-11
  • 打赏
  • 举报
回复
AfxOleInit()调用了么?
fairyprince 2005-11-11
  • 打赏
  • 举报
回复
什么错误呢,提示是什么

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧