建立一个类用来连接数据库class CDataManage  
{
public:
CDataManage();
virtual ~CDataManage();
public:
_RecordsetPtr Record1;
protected:
_ConnectionPtr DataConn;
_RecordsetPtr DataRecord;  public:
  _ConnectionPtr GetConn();//获取adoConnection对象
  _RecordsetPtr GetRecordset();//获取adoRecordset对象
  bool ConnectDatabase(CString constr); //连接数据库
  bool ExecSQL(CString sql);
  };
CDataManage::CDataManage()
{
DataConn.CreateInstance(_uuidof(Connection));    //????
DataRecord.CreateInstance(_uuidof(Recordset));
Record1.CreateInstance(_uuidof(Recordset));
}CDataManage::~CDataManage()
{
DataConn->Release();
DataRecord->Release();
Record1->Release();
}_ConnectionPtr CDataManage::GetConn()      //返回数据成员的值
{
return DataConn; 
}_RecordsetPtr CDataManage::GetRecordset()   //返回数据成员的值
{
return (DataRecord);
}bool CDataManage::ConnectDatabase(CString constr)  //连接数据库
{
DataConn->ConnectionString = (_bstr_t)constr;   //_ConnectionPtr对象
try
{
DataConn->Open("","","",-1);
}
catch(...)
{
return false;
}
return true;}bool CDataManage::ExecSQL(CString sql)
{
_bstr_t sqltext =sql;
try
{
DataConn->Execute(sqltext,NULL,adCmdText); //??
}
catch(_com_error& e)
{
AfxMessageBox(e.ErrorMessage(),0,0);
return false;
}
return true;
}在另一个文件中应用这个类连接数据库
bool change;
datamanage = new CDataManage();   //定义一个用来连接数据库的类对象
 change= datamanage->ConnectDatabase("Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=EquipmentManage;Data Source=.");
if (change==false)
{
  AfxMessageBox("连接数据库初始化失败");
  return 0;
}求解!!为什么连接不上  哪里出错了

解决方案 »

  1.   


    ---连不上,你得把错误提示给出来,才知道是那里的问题啊?
    ---DataConn->Open("","","",-1);????你确定open勒?
      

  2.   

    程序就是用变量change接收的返回值来判断的,
    try
    {
    DataConn->Open("","","",-1);
    }
    catch(...)
    {
    return false; 
    }
    return true;}连不上返回值应该是false吧,然后程序就执行
    AfxMessageBox("连接数据库初始化失败");
    出现提示框
      

  3.   

    我把try  catch去掉  程序运行出来
    Debug error
    ...................省略abnormal program termination
      

  4.   


    我在改程序
     AfxMessageBox("aaa");
    DataConn->Open("","","",-1);
    AfxMessageBox("bbb");
    只能出现aaa提示 不能运行到bbb位置,为open不了
    是这里有问题
    datamanage = new CDataManage(); //定义一个用来连接数据库的类对象
     change= datamanage->ConnectDatabase("Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=EquipmentManage;Data Source=.");
    还是这里或者其他什么地方
    bool CDataManage::ConnectDatabase(CString constr) //连接数据库
    {
    DataConn->ConnectionString = (_bstr_t)constr; //_ConnectionPtr对象
    try
    {
    DataConn->Open("","","",-1);
    }
      

  5.   

    找到答案了 因为这个
    看你SQL SERVER用的哪种登录方式了,
    1.如果是windows登录模式,连接字符串应为:
    Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=mydata;Data Source = 数据库服务器IP2.如果是混合认证方式,连接字符串应为:
    Provider=SQLOLEDB.1;Persist Security Info=False;User ID=用户名;Password=密码;Initial Catalog=mydata;Data Source = 数据库服务器IP