ado.cppado::ado()
{
AfxOleInit();//初始化com
m_connection=NULL;
strConnection = _T("Provider=SQLOLEDB.1;Data Source=MFC;Initial Catalog=mdb"); //数据连接字符串
sqluid="sa";
sqlpsw="123456";
m_connection.CreateInstance(__uuidof(Connection)); //创建connection对象
openConn();
}ado::~ado()
{
closeConn();
}_RecordsetPtr ado::getRecordset(_bstr_t sql)
{
_ConnectionPtr conn=getConn();
_RecordsetPtr m_recordset;
m_recordset.CreateInstance("ADODB.Recordset"); //创建Recordset对象的实例
m_recordset->Open(sql,_variant_t((IDispatch*)conn,true),adOpenStatic,adLockOptimistic,adCmdText);
return m_recordset;
}_ConnectionPtr ado::getConn()
{
if(isOpen()==FALSE)
{
openConn();
}
return m_connection;
}
void ado::openConn()
{
try
{
m_connection->Open(strConnection,sqluid,sqlpsw,adModeUnknown);
}
catch (_com_error &e)
{
AfxMessageBox("数据库连接失败,请检查数据库设置");
ExitProcess(0);
}
}BOOL ado::isOpen()
{
if(m_connection->GetState())
{
return TRUE;
}
else
{
return FALSE;
}
}void ado::closeConn()
{
if(isOpen())
m_connection->Close();
}BOOL ado::executeSql(LPCTSTR sql)
{
_variant_t RecordsAffected;
_ConnectionPtr conn=getConn();
ASSERT(conn != NULL);
ASSERT(strcmp(sql, _T("")) != 0);
try
{
conn->CursorLocation = adUseClient;
conn->Execute(sql,&RecordsAffected,adCmdText);
return TRUE;
}
catch (_com_error &e)
{
AfxMessageBox("执行失败");
return FALSE;
}}
adminlist.cpp中BOOL adminlist::OnInitDialog() ---->这里执行正常
{
CDialog::OnInitDialog();
sqlText="select * from admin"; show(sqlText);
return TRUE;
}void adminlist::OnChangeAdminNameSelect() ---->这里执行错误了,并且还是那个运行时错误,兄弟们帮看看错在哪里
{
UpdateData(true);
CString SQL;
SQL.Format("select * from admin where adminname='%s'",m_select);
m_list1.DeleteAllItems(); //清空列表控件
// SQL="select * from admin where adminname='luocheng'";
AfxMessageBox(SQL);
show(_bstr_t(SQL)); //重新载入信息
}void adminlist::show(_bstr_t sql)
{//读取数据
ado adoo;
m_recordset=adoo.getRecordset(sql);
int i;
i=0;
while(!m_recordset->adoEOF)
{
vid=m_recordset->GetCollect("id");
vUsername = m_recordset->GetCollect("adminname"); //用户名
vpsw = m_recordset->GetCollect("password"); //密码
vpower=m_recordset->GetCollect("power"); //角色
vlastlogintime=m_recordset->GetCollect("lastlogintime"); //最后登录时间
vlastloginIP=m_recordset->GetCollect("lastloginIP"); //最后登录ip
m_list1.InsertItem(i,vid); //插入第一个数据,即第0条数据。先插入,然后在修改其他的信息。
m_list1.SetItemText(i,1,vUsername); //修改第0条数据的其他信息。
m_list1.SetItemText(i,2,vpsw);
m_list1.SetItemText(i,3,vpower);
m_list1.SetItemText(i,4,vlastlogintime);
m_list1.SetItemText(i,5,vlastloginIP);
i=i+1;
m_recordset->MoveNext();///移到下一条记录
}m_recordset->Close(); //关闭数据集
m_recordset=NULL;
}
{
AfxOleInit();//初始化com
m_connection=NULL;
strConnection = _T("Provider=SQLOLEDB.1;Data Source=MFC;Initial Catalog=mdb"); //数据连接字符串
sqluid="sa";
sqlpsw="123456";
m_connection.CreateInstance(__uuidof(Connection)); //创建connection对象
openConn();
}ado::~ado()
{
closeConn();
}_RecordsetPtr ado::getRecordset(_bstr_t sql)
{
_ConnectionPtr conn=getConn();
_RecordsetPtr m_recordset;
m_recordset.CreateInstance("ADODB.Recordset"); //创建Recordset对象的实例
m_recordset->Open(sql,_variant_t((IDispatch*)conn,true),adOpenStatic,adLockOptimistic,adCmdText);
return m_recordset;
}_ConnectionPtr ado::getConn()
{
if(isOpen()==FALSE)
{
openConn();
}
return m_connection;
}
void ado::openConn()
{
try
{
m_connection->Open(strConnection,sqluid,sqlpsw,adModeUnknown);
}
catch (_com_error &e)
{
AfxMessageBox("数据库连接失败,请检查数据库设置");
ExitProcess(0);
}
}BOOL ado::isOpen()
{
if(m_connection->GetState())
{
return TRUE;
}
else
{
return FALSE;
}
}void ado::closeConn()
{
if(isOpen())
m_connection->Close();
}BOOL ado::executeSql(LPCTSTR sql)
{
_variant_t RecordsAffected;
_ConnectionPtr conn=getConn();
ASSERT(conn != NULL);
ASSERT(strcmp(sql, _T("")) != 0);
try
{
conn->CursorLocation = adUseClient;
conn->Execute(sql,&RecordsAffected,adCmdText);
return TRUE;
}
catch (_com_error &e)
{
AfxMessageBox("执行失败");
return FALSE;
}}
adminlist.cpp中BOOL adminlist::OnInitDialog() ---->这里执行正常
{
CDialog::OnInitDialog();
sqlText="select * from admin"; show(sqlText);
return TRUE;
}void adminlist::OnChangeAdminNameSelect() ---->这里执行错误了,并且还是那个运行时错误,兄弟们帮看看错在哪里
{
UpdateData(true);
CString SQL;
SQL.Format("select * from admin where adminname='%s'",m_select);
m_list1.DeleteAllItems(); //清空列表控件
// SQL="select * from admin where adminname='luocheng'";
AfxMessageBox(SQL);
show(_bstr_t(SQL)); //重新载入信息
}void adminlist::show(_bstr_t sql)
{//读取数据
ado adoo;
m_recordset=adoo.getRecordset(sql);
int i;
i=0;
while(!m_recordset->adoEOF)
{
vid=m_recordset->GetCollect("id");
vUsername = m_recordset->GetCollect("adminname"); //用户名
vpsw = m_recordset->GetCollect("password"); //密码
vpower=m_recordset->GetCollect("power"); //角色
vlastlogintime=m_recordset->GetCollect("lastlogintime"); //最后登录时间
vlastloginIP=m_recordset->GetCollect("lastloginIP"); //最后登录ip
m_list1.InsertItem(i,vid); //插入第一个数据,即第0条数据。先插入,然后在修改其他的信息。
m_list1.SetItemText(i,1,vUsername); //修改第0条数据的其他信息。
m_list1.SetItemText(i,2,vpsw);
m_list1.SetItemText(i,3,vpower);
m_list1.SetItemText(i,4,vlastlogintime);
m_list1.SetItemText(i,5,vlastloginIP);
i=i+1;
m_recordset->MoveNext();///移到下一条记录
}m_recordset->Close(); //关闭数据集
m_recordset=NULL;
}
====
运行错误提示是什么啊?
这个函数你调试了吗?错误点在哪一句啊?
那在debug下直接运行的话,如果出现错误,会有界面弹出,选择“调试”看看断点在哪里
dubug Assertion Faoled!
program: .......code.exe终止 重试 忽略
然后在菜单那里 Debug -〉break。
就可以看内部错之前都执行过什么东西。
line 54错误