在做一个简单的工资管理系统
我加了一个ADO类
之后在一个对话框类中使用ADO类
可以实现我的所有操作,但是在第二个对话框类中使用时就出错啊,
这是怎么回事啊,我明明是按第一个那样来做的啊,救命啊,在线=========================
我加了一个ADO类
之后在一个对话框类中使用ADO类
可以实现我的所有操作,但是在第二个对话框类中使用时就出错啊,
这是怎么回事啊,我明明是按第一个那样来做的啊,救命啊,在线=========================
解决方案 »
- 关于弹窗口
- 如何在控制台程序中加入MFC支持
- SetBKColor, SetTextColor 对 Bitblt 的影响?
- 抽奖问题
- 关于SetWindowLong的一个小问题,应该不是很难!可是我不知道为什么?
- 对我来说很难,对你们来说很简单^_^
- BSTR 能不能变成 char* 或 std:string,怎么变
- 有关CDocument::UpdateAllViews()问题
- 如何往CString插入回车和换行和空格
- 我用代码try跟踪异常时出现了COleException,ReportError提示:参数错误
- 单片机与上位机MFC的串口通信中数据格式转换问题!急
- vs2008支持哪些数据库啊。。。
ADO::ADO()
{}ADO::~ADO()
{}void ADO::OnInitADOConn()
{
::CoInitialize(NULL);
try
{
m_pConnection.CreateInstance("ADODB.Connection"); //创建连接对象实例
_bstr_t strConnect="DRIVER={Microsoft Access Driver (*.mdb)};\
uid=;pwd=;DBQ=teacher.mdb;";
m_pConnection->Open(strConnect,"","",adModeUnknown); //打开数据库
}
catch(_com_error e)
{
AfxMessageBox(e.Description()); //弹出错误处理
}
}
_RecordsetPtr& ADO::OpenRecordset(CString sql)
{
ASSERT(!sql.IsEmpty()); //SQL语句不能为空
try
{
m_pRecordset.CreateInstance(__uuidof(Recordset)); //创建记录集对象实例
m_pRecordset->Open(_bstr_t(sql), m_pConnection.GetInterfacePtr(),
adOpenDynamic, adLockOptimistic, adCmdText); //执行SQL得到记录集
}
catch(_com_error e) //捕获可能的异常
{
AfxMessageBox(e.Description());
}
return m_pRecordset;
}void ADO::CloseRecordset()
{
if(m_pRecordset->GetState() == adStateOpen) //判断当前的记录集状态
m_pRecordset->Close(); //关闭记录集
}
void ADO::CloseConn()
{
m_pConnection->Close(); //关闭数据库连接
::CoUninitialize(); //释放COM环境
}
UINT ADO::GetRecordCount(_RecordsetPtr pRecordset)
{
int nCount = 0; //声明保存记录数的变量
try{
pRecordset->MoveFirst(); //将记录集指针移动到第一条记录
}
catch(...) //捕捉可能出现的错误
{
return 0; //产生错误时返回0
}
if(pRecordset->adoEOF) //判断记录集中是否没有记录
return 0; //无记录时返回0
while (!pRecordset->adoEOF) //当记录集指针没有指向最后时
{
pRecordset->MoveNext(); //将记录集指针移动到下一条记录
nCount = nCount + 1; //记录个数的变量加1
}
pRecordset->MoveFirst(); //将记录集指针移动到第一条记录
return nCount; //返回记录数
}
ado类
{
ADO m_Ado;
m_Ado.OnInitADOConn();//连接数据库 CString SQL = "select * from Table_员工信息 order by 员工ID desc"; //设置查询字符串
m_Ado.m_pRecordset=m_Ado.OpenRecordset(SQL);//打开记录集 while(!m_Ado.m_pRecordset->adoEOF)
{
m_List.InsertItem(0,"");//向列表视图控件中插进行
//向列表视图控件中插进列
m_List.SetItemText(0,0,(char*)(_bstr_t)m_Ado.m_pRecordset->GetCollect("员工ID"));
m_List.SetItemText(0,1,(char*)(_bstr_t)m_Ado.m_pRecordset->GetCollect("员工姓名"));
m_List.SetItemText(0,2,(char*)(_bstr_t)m_Ado.m_pRecordset->GetCollect("员工部门ID"));
m_List.SetItemText(0,3,(char*)(_bstr_t)m_Ado.m_pRecordset->GetCollect("员工职务"));
m_List.SetItemText(0,4,(char*)(_bstr_t)m_Ado.m_pRecordset->GetCollect("身份证号"));
m_List.SetItemText(0,5,(char*)(_bstr_t)m_Ado.m_pRecordset->GetCollect("银行账号"));
m_Ado.m_pRecordset->MoveNext();//将记录集指针移动到下一条记录
}
m_Ado.CloseRecordset();//关闭记录集
m_Ado.CloseConn();//断开数据库连接
}
第一个对话框类中用的啊,当我在第二个里面这样用时就出错,在tab 控件的 第二个对话框中用就不行了
怎么做啊,我新手啊,能详细些吗,哎,课程设计就没用一点自己学的