小弟不是专业搞这个的,各位么见笑,也许应该放到一个线程里来做这个,可是俺不太会写线程。呵呵
说说你们是怎么开发数据库程序的。谢谢
void CLogin::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData();
if ( phone.Left(2) != "13" || phone.GetLength() != 11 )
{
MessageBox("手机号码错误");
return;
}
CString sql; sql.Format("select * from chat_user where phone=%s",phone); _RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(_variant_t(sql),(IDispatch *)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText); if ( m_pRecordset->adoEOF )
{
MessageBox("手机号码不存在");
return;
}
_variant_t nickname = m_pRecordset->GetCollect("nickname");
title.Format("%s",(char *)(_bstr_t)nickname);
m_pRecordset->Close(); GetDlgItem( IDOK )->EnableWindow(false);
sql.Format("select userid,nickname,phone from chat_user where state=1");
m_pRecordset->Open(_variant_t(sql),(IDispatch *)m_pConnection,adOpenKeyset,adLockOptimistic,adCmdText);
int i=0;
int count = m_pRecordset->RecordCount;
progress.SetRange( 1, count );
CString str;
MSG msg;
User u;
while(!m_pRecordset->adoEOF)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
i++;
str.Format("%d/%d",i,count);
GetDlgItem( IDC_PROTEXT )->SetWindowText(str);
progress.SetPos(i);
_variant_t userid = m_pRecordset->GetCollect("userid");
_variant_t nickname = m_pRecordset->GetCollect("nickname");
_variant_t pho = m_pRecordset->GetCollect("phone");
u.nickname = (char *)(_bstr_t)nickname;
u.userid = userid.lVal;
luser.push_back(u);
m_pRecordset->MoveNext();
}
m_pRecordset->Close(); sql.Format("select * from chat_room");
m_pRecordset->Open(_variant_t(sql),(IDispatch *)m_pConnection,adOpenKeyset,adLockOptimistic,adCmdText);
i=0;
count = m_pRecordset->RecordCount;
progress.SetRange( 1, count );
Room r;
while(!m_pRecordset->adoEOF)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
} i++;
str.Format("%d/%d",i,count);
GetDlgItem( IDC_PROTEXT )->SetWindowText(str);
progress.SetPos(i);
_variant_t id = m_pRecordset->GetCollect("id");
_variant_t roomname = m_pRecordset->GetCollect("roomname");
r.id = id.lVal;
r.roomname = (char *)(_bstr_t)roomname;
lroom.push_back(r);
m_pRecordset->MoveNext();
}
m_pRecordset->Close(); OnOK();
}
说说你们是怎么开发数据库程序的。谢谢
void CLogin::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData();
if ( phone.Left(2) != "13" || phone.GetLength() != 11 )
{
MessageBox("手机号码错误");
return;
}
CString sql; sql.Format("select * from chat_user where phone=%s",phone); _RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(_variant_t(sql),(IDispatch *)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText); if ( m_pRecordset->adoEOF )
{
MessageBox("手机号码不存在");
return;
}
_variant_t nickname = m_pRecordset->GetCollect("nickname");
title.Format("%s",(char *)(_bstr_t)nickname);
m_pRecordset->Close(); GetDlgItem( IDOK )->EnableWindow(false);
sql.Format("select userid,nickname,phone from chat_user where state=1");
m_pRecordset->Open(_variant_t(sql),(IDispatch *)m_pConnection,adOpenKeyset,adLockOptimistic,adCmdText);
int i=0;
int count = m_pRecordset->RecordCount;
progress.SetRange( 1, count );
CString str;
MSG msg;
User u;
while(!m_pRecordset->adoEOF)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
i++;
str.Format("%d/%d",i,count);
GetDlgItem( IDC_PROTEXT )->SetWindowText(str);
progress.SetPos(i);
_variant_t userid = m_pRecordset->GetCollect("userid");
_variant_t nickname = m_pRecordset->GetCollect("nickname");
_variant_t pho = m_pRecordset->GetCollect("phone");
u.nickname = (char *)(_bstr_t)nickname;
u.userid = userid.lVal;
luser.push_back(u);
m_pRecordset->MoveNext();
}
m_pRecordset->Close(); sql.Format("select * from chat_room");
m_pRecordset->Open(_variant_t(sql),(IDispatch *)m_pConnection,adOpenKeyset,adLockOptimistic,adCmdText);
i=0;
count = m_pRecordset->RecordCount;
progress.SetRange( 1, count );
Room r;
while(!m_pRecordset->adoEOF)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
} i++;
str.Format("%d/%d",i,count);
GetDlgItem( IDC_PROTEXT )->SetWindowText(str);
progress.SetPos(i);
_variant_t id = m_pRecordset->GetCollect("id");
_variant_t roomname = m_pRecordset->GetCollect("roomname");
r.id = id.lVal;
r.roomname = (char *)(_bstr_t)roomname;
lroom.push_back(r);
m_pRecordset->MoveNext();
}
m_pRecordset->Close(); OnOK();
}
要想快用专用接口。
从你的程序看来,屏幕需要输出1200次,也就是刷新1200次。
嘿嘿。当然很慢。在这之前你把屏幕刷新disable掉。保正很快。
注明原帖的url。希望可以帮到你。