建立一个类用来连接数据库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;
}求解!!为什么连接不上 哪里出错了
{
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;
}求解!!为什么连接不上 哪里出错了
---连不上,你得把错误提示给出来,才知道是那里的问题啊?
---DataConn->Open("","","",-1);????你确定open勒?
try
{
DataConn->Open("","","",-1);
}
catch(...)
{
return false;
}
return true;}连不上返回值应该是false吧,然后程序就执行
AfxMessageBox("连接数据库初始化失败");
出现提示框
Debug error
...................省略abnormal program termination
我在改程序
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);
}
看你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