怪怪怪>>>>>>ADO高手请进 如楼上说的把你加的源码贴上看看! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 老兄,源码如下,请帮我看看!class CSavelogDlg : public CDialog{// Constructionpublic: bool InintConnectToSQL(); unsigned long ProcessCount(); CSavelogDlg(CWnd* pParent = NULL); // standard constructor _ConnectionPtr m_pConnection; _CommandPtr m_pCommand; _RecordsetPtr m_pRecordset; void WriteErrorLog(char *p); unsigned long m_mFirstNumber; unsigned long m_mSecondNumber;}void CSavelogDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default KillTimer(1); unsigned long m; m_mSecondNumber = this->ProcessCount (); m = m_mSecondNumber - m_mFirstNumber; m_mFirstNumber = m_mSecondNumber; int len = m_EditShow.GetWindowTextLength (); m_EditShow.SetSel(len,len); char p[32]; sprintf(p,"count %u in %d minute\r\n\0",m,m_mMinute); m_EditShow.ReplaceSel (p); this->WriteErrorLog (p); UpdateData(true); SetTimer(1,60000 * m_mMinute,NULL); CDialog::OnTimer(nIDEvent);}void CSavelogDlg::OnClose() { // TODO: Add your message handler code here and/or call default if (m_bConnectToSql) KillTimer(1); CDialog::OnClose();}unsigned long CSavelogDlg::ProcessCount(){ CString strsql = "Select count(*),count(totalAccess) as 'a1','a2' from sm77user"; unsigned long ret; unsigned long countuser; m_pCommand->CommandText = _bstr_t(strsql); m_pRecordset = m_pCommand->Execute (NULL,NULL,adCmdText); _variant_t theValuecount; _variant_t theValueuser; theValuecount = m_pRecordset->GetCollect ("a1"); theValueuser = m_pRecordset->GetCollect ("a2"); if (theValuecount.vt != VT_ERROR) ret = theValuecount.lVal ; else { TRACE("Changle the data type is Error!"); int len = m_EditShow.GetWindowTextLength (); m_EditShow.SetSel (len ,len); m_EditShow.ReplaceSel ("Changle the data type is Error!"); return 0; } if (theValueuser.vt != VT_ERROR) countuser = theValueuser.lVal; else { TRACE("Changle the data type is Error!"); int len = m_EditShow.GetWindowTextLength (); m_EditShow.SetSel (len ,len); m_EditShow.ReplaceSel ("Changle the data type is Error!"); return 0; } char p[8]; _ultoa(ret,p,10); SetDlgItemText(IDC_EDITCOUNT,p); _ultoa(countuser,p,10); SetDlgItemText(IDC_EDITCOUNT,p); return ret;}void CSavelogDlg::WriteErrorLog(char *p){ char q[512]; CTime mt = CTime::GetCurrentTime (); sprintf(q,"%d-%d-%d %d:%d:%d %s\0",mt.GetYear (),mt.GetMonth (), mt.GetDay(),mt.GetHour (),mt.GetMinute (),mt.GetSecond (),p); FILE *fp; fp = fopen("sendlog.txt","r+"); if (!fp) { fp = fopen("sendlog.txt","w+"); if (!fp){ TRACE("Open the \"sendlog.txt\" is Error!"); AfxMessageBox("Open the \"sm77log.txt\" is Error!"); return; } } fseek(fp,0L,SEEK_END); fprintf(fp,"%s",q); fclose(fp);}bool CSavelogDlg::InintConnectToSQL(){ char strDatabase[100]; memset(strDatabase,0,sizeof(strDatabase)); GetPrivateProfileString("DB", "Database", "Database=Provider=SQLOLEDB.1;SERVER=10.5.20.1;DATABASE=sm77;UID=sa;PASSWORD=sa;", strDatabase,sizeof(strDatabase),".\\sendlog.ini"); //strcpy(strDatabase,"PROVIDER= SQLOLEDB.1;SERVER=10.5.20.1;DATABASE=sm77;UID=sa;PASSWORD=sa;"); //³õʼ»¯com»·¾³ ::CoInitialize (NULL); HRESULT hr; try{ hr = m_pConnection.CreateInstance (__uuidof(Connection)); if (SUCCEEDED(hr)) { TRACE("\tCREATE CONNECTION TURE\n"); m_pConnection->CursorLocation = adUseClient; hr = m_pConnection->Open (_bstr_t(strDatabase), _bstr_t(L""), _bstr_t(L""), adModeUnknown ); if (SUCCEEDED(hr)) { m_bConnectToSql = true; TRACE("Connect to DataBase: %s\n",strDatabase); } } } catch(_com_error e) { AfxMessageBox("Connect Database failed."); return false; } hr = m_pCommand.CreateInstance (__uuidof(Command)); if (FAILED(hr)) { _com_issue_error(hr); ::AfxMessageBox ("Create m_pCommand failed."); return false; } m_pCommand->ActiveConnection = m_pConnection;//ʹִÐÐÃüÁîÓëÊý¾Ý¿âÁªÏµ hr = m_pRecordset.CreateInstance (__uuidof(Recordset)); if (FAILED(hr)) { _com_issue_error(hr); ::AfxMessageBox("Create m_pRecordset failed."); return false; } m_bStartTimer = true; UpdateData(false); SetTimer(1,60000 * m_mMinute,NULL); m_mFirstNumber = this->ProcessCount (); return true;}void CSavelogDlg::OnButton1() { // TODO: Add your control notification handler code here if (m_bStartTimer && m_bConnectToSql) KillTimer(1); UpdateData(true); SetTimer(1,1000 * m_mMinute,NULL);} 在DLL中如何获得主程序里的汉字输入? 菜鸟提问:如何用socket登陆BBS 请教后台程序如何弹出对话框 新建对话框的问题 关于读取*.ini/*.txt 文件的问题!!比较头痛。 请高手给个Addnew各种用法的例子看看 谢了! 紧急求救,搞了一天了都没搞定!!!!! 请教一个关于文件保存的问题 将A程序中参数传给B.EXE文件,B该如何得到的这些参数参数?A,B分别为两个VC编制应用程序 为什么我搜索以前的贴子,好多打不开?有什么办法吗? 如何在编辑框控件中响应回车键以将其中的内容显示在视图中? 大家觉得microsoft visual studio.net有搞头吗?
class CSavelogDlg : public CDialog
{
// Construction
public:
bool InintConnectToSQL();
unsigned long ProcessCount();
CSavelogDlg(CWnd* pParent = NULL); // standard constructor _ConnectionPtr m_pConnection;
_CommandPtr m_pCommand;
_RecordsetPtr m_pRecordset; void WriteErrorLog(char *p); unsigned long m_mFirstNumber;
unsigned long m_mSecondNumber;
}void CSavelogDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
KillTimer(1);
unsigned long m;
m_mSecondNumber = this->ProcessCount ();
m = m_mSecondNumber - m_mFirstNumber;
m_mFirstNumber = m_mSecondNumber;
int len = m_EditShow.GetWindowTextLength ();
m_EditShow.SetSel(len,len);
char p[32];
sprintf(p,"count %u in %d minute\r\n\0",m,m_mMinute);
m_EditShow.ReplaceSel (p); this->WriteErrorLog (p);
UpdateData(true);
SetTimer(1,60000 * m_mMinute,NULL);
CDialog::OnTimer(nIDEvent);
}void CSavelogDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
if (m_bConnectToSql) KillTimer(1);
CDialog::OnClose();
}unsigned long CSavelogDlg::ProcessCount()
{
CString strsql = "Select count(*),count(totalAccess) as 'a1','a2' from sm77user";
unsigned long ret;
unsigned long countuser; m_pCommand->CommandText = _bstr_t(strsql);
m_pRecordset = m_pCommand->Execute (NULL,NULL,adCmdText); _variant_t theValuecount;
_variant_t theValueuser;
theValuecount = m_pRecordset->GetCollect ("a1");
theValueuser = m_pRecordset->GetCollect ("a2"); if (theValuecount.vt != VT_ERROR) ret = theValuecount.lVal ;
else {
TRACE("Changle the data type is Error!");
int len = m_EditShow.GetWindowTextLength ();
m_EditShow.SetSel (len ,len);
m_EditShow.ReplaceSel ("Changle the data type is Error!");
return 0;
} if (theValueuser.vt != VT_ERROR) countuser = theValueuser.lVal;
else {
TRACE("Changle the data type is Error!");
int len = m_EditShow.GetWindowTextLength ();
m_EditShow.SetSel (len ,len);
m_EditShow.ReplaceSel ("Changle the data type is Error!");
return 0;
} char p[8];
_ultoa(ret,p,10);
SetDlgItemText(IDC_EDITCOUNT,p);
_ultoa(countuser,p,10);
SetDlgItemText(IDC_EDITCOUNT,p); return ret;
}void CSavelogDlg::WriteErrorLog(char *p)
{
char q[512];
CTime mt = CTime::GetCurrentTime ();
sprintf(q,"%d-%d-%d %d:%d:%d %s\0",mt.GetYear (),mt.GetMonth (),
mt.GetDay(),mt.GetHour (),mt.GetMinute (),mt.GetSecond (),p); FILE *fp;
fp = fopen("sendlog.txt","r+");
if (!fp)
{
fp = fopen("sendlog.txt","w+");
if (!fp){
TRACE("Open the \"sendlog.txt\" is Error!");
AfxMessageBox("Open the \"sm77log.txt\" is Error!");
return; }
}
fseek(fp,0L,SEEK_END);
fprintf(fp,"%s",q);
fclose(fp);
}bool CSavelogDlg::InintConnectToSQL()
{
char strDatabase[100];
memset(strDatabase,0,sizeof(strDatabase));
GetPrivateProfileString("DB", "Database",
"Database=Provider=SQLOLEDB.1;SERVER=10.5.20.1;DATABASE=sm77;UID=sa;PASSWORD=sa;",
strDatabase,sizeof(strDatabase),".\\sendlog.ini");
//strcpy(strDatabase,"PROVIDER= SQLOLEDB.1;SERVER=10.5.20.1;DATABASE=sm77;UID=sa;PASSWORD=sa;"); //³õʼ»¯com»·¾³
::CoInitialize (NULL);
HRESULT hr;
try{
hr = m_pConnection.CreateInstance (__uuidof(Connection));
if (SUCCEEDED(hr))
{
TRACE("\tCREATE CONNECTION TURE\n");
m_pConnection->CursorLocation = adUseClient;
hr = m_pConnection->Open (_bstr_t(strDatabase),
_bstr_t(L""),
_bstr_t(L""),
adModeUnknown
);
if (SUCCEEDED(hr))
{
m_bConnectToSql = true;
TRACE("Connect to DataBase: %s\n",strDatabase);
}
}
}
catch(_com_error e)
{
AfxMessageBox("Connect Database failed.");
return false;
} hr = m_pCommand.CreateInstance (__uuidof(Command));
if (FAILED(hr))
{
_com_issue_error(hr);
::AfxMessageBox ("Create m_pCommand failed.");
return false;
}
m_pCommand->ActiveConnection = m_pConnection;//ʹִÐÐÃüÁîÓëÊý¾Ý¿âÁªÏµ hr = m_pRecordset.CreateInstance (__uuidof(Recordset));
if (FAILED(hr))
{
_com_issue_error(hr);
::AfxMessageBox("Create m_pRecordset failed.");
return false;
}
m_bStartTimer = true;
UpdateData(false);
SetTimer(1,60000 * m_mMinute,NULL); m_mFirstNumber = this->ProcessCount ();
return true;
}void CSavelogDlg::OnButton1()
{
// TODO: Add your control notification handler code here
if (m_bStartTimer && m_bConnectToSql) KillTimer(1); UpdateData(true);
SetTimer(1,1000 * m_mMinute,NULL);
}