/*********************
* *
* ADO操作实例 *
* *
*********************/
::CoInitialize(NULL); //初始化OLE/COM库环境
程序最后要调用 ::CoUninitialize();//释放程序占用的COM 资源。
#pragma once
#include "afxwin.h"
#include
using namespace std ;
// CADOSampleDlg 对话框
class CADOSampleDlg : public CDialog
{
DECLARE_DYNAMIC(CADOSampleDlg)
public:
CADOSampleDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~CADOSampleDlg();
// 对话框数据
enum { IDD = IDD_DLG_ADOSAMPLE };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
// 添加按钮
CButton m_btnAdd;
public:
// 修改按钮
CButton m_btnEdit;
public:
// 列表按钮
CButton m_btnList;
public:
// ID号
CEdit m_ID;
public:
// 姓名
CEdit m_EditStudentName;
public:
// 出生日期
CEdit m_EditBirthday;
public:
// 班级
CEdit m_EditGrade;
public:
// 列表
CEdit m_EditList;
public:
afx_msg void OnBnClickedBtnAdd();
public:
afx_msg void OnBnClickedBtnEdit();
public:
// 删除记录
CButton m_btnDel;
public:
afx_msg void OnBnClickedBtnDel();
public:
afx_msg void OnBnClickedBtnList();
public:
//窗口显示之前调用
virtual BOOL OnInitDialog() ;
public:
//数据库连接串
string m_cnStr ;
public:
//列表
void List() ;
};
///////////////////////////////
// ADOSampleDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "MFC1.h"
#include "ADOSampleDlg.h"
#import "msado15.dll" no_namespace rename("EOF","adoEOF") //Ado操作组件引入
// CADOSampleDlg 对话框
IMPLEMENT_DYNAMIC(CADOSampleDlg, CDialog)
CADOSampleDlg::CADOSampleDlg(CWnd* pParent /*=NULL*/)
: CDialog(CADOSampleDlg::IDD, pParent)
{
char szPath[255] = {0} ;
::GetModuleFileName(NULL,szPath,255) ;
char *p = szPath + strlen(szPath) ;
while((*p)!='\\'){
(*p) = '\0' ;
p-- ;
}
strcat(szPath,"Formula.mdb") ;
char szCnStr[355] = {0} ;
::sprintf(szCnStr,"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",szPath) ;
m_cnStr = szCnStr ;
//m_cnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & Server.MapPath(dbpath)" ;
}
CADOSampleDlg::~CADOSampleDlg()
{
}
void CADOSampleDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_BTN_ADD, m_btnAdd);
DDX_Control(pDX, IDC_BTN_EDIT, m_btnEdit);
DDX_Control(pDX, IDC_BTN_LIST, m_btnList);
DDX_Control(pDX, IDC_EDIT_ID, m_ID);
DDX_Control(pDX, IDC_EDIT_STUDENTNAME, m_EditStudentName);
DDX_Control(pDX, IDC_EDIT_BIRTHDAY, m_EditBirthday);
DDX_Control(pDX, IDC_EDIT_GRADE, m_EditGrade);
DDX_Control(pDX, IDC_EDIT_LIST, m_EditList);
DDX_Control(pDX, IDC_BTN_DEL, m_btnDel);
}
BEGIN_MESSAGE_MAP(CADOSampleDlg, CDialog)
ON_BN_CLICKED(IDC_BTN_ADD, &CADOSampleDlg::OnBnClickedBtnAdd)
ON_BN_CLICKED(IDC_BTN_EDIT, &CADOSampleDlg::OnBnClickedBtnEdit)
ON_BN_CLICKED(IDC_BTN_DEL, &CADOSampleDlg::OnBnClickedBtnDel)
ON_BN_CLICKED(IDC_BTN_LIST, &CADOSampleDlg::OnBnClickedBtnList)
END_MESSAGE_MAP()
//窗口显示之前调用
BOOL CADOSampleDlg::OnInitDialog()
{
CDialog::OnInitDialog() ;
//m_cnStr = "" ;
return true ;
}
// CADOSampleDlg 消息处理程序
//添加记录
void CADOSampleDlg::OnBnClickedBtnAdd()
{
// TODO: 在此添加控件通知处理程序代码
CString ID("") ;
CString sName("") ;
CString sBirthDay("") ;
CString sGrade("") ;
m_ID.GetWindowText(ID) ;
m_EditStudentName.GetWindowText(sName) ;
m_EditBirthday.GetWindowText(sBirthDay) ;
m_EditGrade.GetWindowText(sGrade) ;
try{
_ConnectionPtr pCon ;
if (FAILED(pCon.CreateInstance("ADODB.Connection")))
{
MessageBox("Failed to Connection Create Instance!") ;
return ;
}
//_variant_t varSRC(m_cnStr);
_bstr_t bstrSRC(m_cnStr.c_str());
if (FAILED(pCon->Open(bstrSRC,"","",-1)))
{
MessageBox("Fail to Open Connection!") ;
pCon.Release();
return ;
}
CString strSql("") ;
strSql.Format("insert into TZTest(StudentName,BirthDay,Grade) values('%s','%s',%s)",sName,sBirthDay,sGrade) ;
_variant_t varSQL(strSql);
//COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
pCon->Execute(_bstr_t(strSql),NULL,adExecuteNoRecords);
pCon->Close() ;
pCon.Release() ;
//CoUninitialize();
List() ;
}catch(_com_error e){
MessageBox(e.ErrorMessage()) ;
return ;
}
}
//修改记录
void CADOSampleDlg::OnBnClickedBtnEdit()
{
// TODO: 在此添加控件通知处理程序代码
CString ID("") ;
CString sName("") ;
CString sBirthDay("") ;
CString sGrade("") ;
m_ID.GetWindowText(ID) ;
m_EditStudentName.GetWindowText(sName) ;
m_EditBirthday.GetWindowText(sBirthDay) ;
m_EditGrade.GetWindowText(sGrade) ;
try{
_ConnectionPtr pCn ;
if(FAILED(pCn.CreateInstance("ADODB.connection"))){
MessageBox("fail to Create connection Instance") ;
return ;
}
_bstr_t bstrCnStr(m_cnStr.c_str()) ;
if(FAILED(pCn->Open(bstrCnStr,"","",-1))){
MessageBox("fail to Open connection!") ;
return ;
}
CString strSql("") ;
strSql.Format("update TZTest set StudentName='%s',BirthDay='%s',Grade=%s where ID=%s",sName,sBirthDay,sGrade,ID) ;
pCn->Execute(_bstr_t(strSql),NULL,adExecuteNoRecords) ;
pCn->Close() ;
pCn.Release() ;
List() ;
}catch(_com_error e){
MessageBox(e.ErrorMessage()) ;
}
}
//删除记录
void CADOSampleDlg::OnBnClickedBtnDel()
{
// TODO: 在此添加控件通知处理程序代码
CString ID("") ;
m_ID.GetWindowText(ID) ;
try{
_ConnectionPtr pCn ;
if(FAILED(pCn.CreateInstance("ADODB.connection"))){
MessageBox("fail to Create Connection Instance!") ;
return ;
}
_bstr_t bstrCnStr(m_cnStr.c_str()) ;
if(FAILED(pCn->Open(bstrCnStr,"","",-1))){
MessageBox("fail to Open Connection!") ;
return ;
}
CString strSql("") ;
strSql.Format("delete from TZTest where ID=%s",ID) ;
pCn->Execute(_bstr_t(strSql),NULL,adExecuteNoRecords) ;
pCn->Close() ;
pCn.Release() ;
List() ;
}catch(_com_error e){
MessageBox(e.ErrorMessage()) ;
return ;
}
}
//记录列表
void CADOSampleDlg::OnBnClickedBtnList()
{
// TODO: 在此添加控件通知处理程序代码
List() ;
}
//列表
void CADOSampleDlg::List()
{
//if(CoInitialize(NULL)!=S_OK){
// MessageBox("CoInitialize err!") ;
// return ;
//}
try{
_RecordsetPtr pRs;
if (FAILED(pRs.CreateInstance("ADODB.Recordset")))
{
MessageBox("Fail to Create Recordset Instance!") ;
return ;
}
char strSQL[300] = {0} ;
strcpy(strSQL,"select * from TZTest") ;
//_variant_t varSRC(strSRC);
_variant_t varSQL(strSQL);
if(FAILED(pRs->Open(varSQL,m_cnStr.c_str(),adOpenStatic,adLockOptimistic,adCmdText)))
{
MessageBox("Fail to Open Sql") ;
pRs.Release();
return ;
}
CString sContent("") ;
sContent += "List:\r\n" ;
while(!pRs->adoEOF){
char szLine[255] = {0} ;
string sID = _bstr_t(pRs->GetCollect("ID")) ;
string sStudentName = _bstr_t(pRs->GetCollect("StudentName")) ;
string sBirthday = _bstr_t(pRs->GetCollect("Birthday")) ;
string sGrade = _bstr_t(pRs->GetCollect("Grade")) ;
sprintf(szLine,"ID:%s,Name:%s,Birth:%s,Grade:%s\r\n",sID.c_str(),sStudentName.c_str(),sBirthday.c_str(),sGrade.c_str()) ;
sContent += szLine ;
pRs->MoveNext() ;
}
pRs->Close();
pRs.Release();
//CoUninitialize() ;
m_EditList.SetWindowText(sContent) ;
}catch(_com_error e){
MessageBox("err!") ;
MessageBox(e.ErrorMessage()) ;
}
}
/*
_ConnectionPtr pCon ;
if (FAILED(pCon.CreateInstance("ADODB.Connection")))
{
CMyClass::WriteFile(m_LogFile,"Create Instance failed!");
return 2 ;
}
_variant_t varSRC(m_cnStr);
_bstr_t bstrSRC(m_cnStr);
if (FAILED(pCon->Open(bstrSRC,"","",-1)))
{
CMyClass::WriteFile(m_LogFile,"Can not open Database!");
pCon.Release();
return -1 ;
}
time_t t = 0;
tm *ltm = NULL ;
time(&t); // get time
ltm = localtime(&t);
char szEventTime[30] = {0} ;
sprintf(szEventTime,"%d-%d-%d %d:%d:%d",ltm->tm_year+1900,ltm->tm_mon+1,ltm->tm_mday,ltm->tm_hour,ltm->tm_min,ltm->tm_sec) ;
int nSqlLen = 150 + strlen(szFromLogin) + strlen(szToLogins) + strlen(szEventTime) + strlen(szEventDetail) ;
char *strSql = (char*)malloc(sizeof(char)*(nSqlLen+1)) ;
//free(strSql) ;
//memset(strSql,0,nSqlLen) ;
sprintf(strSql,"insert into TITILChatLog(FromLogin,ToLogins,EventType,EventTime,EventDetail) values('%s','%s',%d,'%s','%s')",
CMyClass::ReplaceStr(szFromLogin,'\'',"''"),CMyClass::ReplaceStr(szToLogins,'\'',"''"),nEventType,szEventTime,CMyClass::ReplaceStr(szEventDetail,'\'',"''")) ;
//_variant_t varSRC(strSRC);
_variant_t varSQL(strSql);
//COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
pCon->Execute(_bstr_t(strSql),NULL,adExecuteNoRecords);
pCon->Close() ;
pCon.Release() ;
//LogFile(gm_LogFile,"操作数据库OK") ;
free(strSql) ;
strSql = NULL ;
//CoUninitialize();
}catch(_com_error e){
//MessageBox(NULL,(LPCTSTR)e.Description(),"操作数据库错误",MB_OK|MB_ICONERROR);
//LogFile(gm_LogFile,"操作数据库错误") ;
//CoUninitialize();
CMyClass::WriteFileWithSysTime(m_LogFile,"Error:CServiceFuns::EventLog-1 系统出现异常\r\n") ;
return 4 ;
}
///////////////////////////////////////////////////////////////////////
try{
_RecordsetPtr pPtr;
if (FAILED(pPtr.CreateInstance("ADODB.Recordset")))
{
CMyClass::WriteFile(m_LogFile,"Create Instance failed!");
EventLog(LoginName,"",ITILCHAT_LOGIN,"登录失败,Create Instance failed!") ;
return 2 ;
}
CMD5 md5 ;
md5.setPlainText(Pwd) ;
char *szLoginName = CMyClass::ReplaceStr(LoginName,'\'',"''");
const char *szPwd = md5.getMD5Digest() ;
char strSQL[300] = {0} ;
sprintf(strSQL,"select LoginName,Compellation from TEntry where LoginName='%s' and LogPwd='%s'",szLoginName,szPwd) ;
//_variant_t varSRC(strSRC);
_variant_t varSQL(strSQL);
if(FAILED(pPtr->Open(varSQL,m_cnStr,adOpenStatic,adLockOptimistic,adCmdText)))
{
printf("Open table failed!");
EventLog(LoginName,"",ITILCHAT_LOGIN,"登录失败,Open table failed!") ;
pPtr.Release();
return 3;
}
if(!pPtr->adoEOF){
string sEmployeeID = _bstr_t(pPtr->GetCollect("LoginName")) ;
string sNickName = _bstr_t(pPtr->GetCollect("Compellation")) ;
//int nEmployeeID = atoi(sEmployeeID.c_str()) ;
//loginInfo.client = NULL ;
loginInfo.EmployeeID = 0 ;
//loginInfo.IP = NULL ;
//loginInfo.Port = 0 ;
strcpy(loginInfo.LoginName,LoginName) ;
strcpy(loginInfo.NickName,sNickName.c_str()) ;
loginInfo.State = 1 ;
loginInfo.StateMsg[0] = '\0' ;
nRet = 0 ;
}
pPtr->Close();
pPtr.Release();
if(nRet==0){
EventLog(LoginName,"",ITILCHAT_LOGIN,"登录成功") ;
}else{
EventLog(LoginName,"",ITILCHAT_LOGIN,"登录失败") ;
}
//LogFile(gm_LogFile,"操作数据库OK") ;
CMyClass::FreeMem(&szLoginName) ;
//CoUninitialize();
}catch(_com_error e){
//MessageBox(NULL,(LPCTSTR)e.Description(),"操作数据库错误",MB_OK|MB_ICONERROR);
//LogFile(gm_LogFile,"操作数据库错误") ;
EventLog(LoginName,"",ITILCHAT_LOGIN,"登录失败,系统发生异常") ;
//CoUninitialize();
CMyClass::WriteFileWithSysTime(m_LogFile,"Error:CServiceFuns::Login--0-1 系统出现异常\r\n") ;
return 4 ;
}
*/