📄 datamodel.cpp
字号:
// DataModel.cpp: implementation of the DataModel class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "TIKU.h"
#include "DataModel.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
DataModel::DataModel()
{
}
DataModel::~DataModel()
{
}
bool DataModel::OpenConnection()
{
HRESULT hr;
try
{
::CoInitialize(NULL); //初始化com 必须为NULL
hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
hr = m_pConnection->Open("Provider=SQLOLEDB; Server=ZWS;Database=TestPaper;User ID=sa;Password=141725;","","",NULL);
//m_pConnection->Close();
//AfxMessageBox("数据库连接成功");///显示错误信息
if(SUCCEEDED(hr))
return true;
else
{
AfxMessageBox("打开Connection对象失败!");///显示错误信息
return false;
}
}
else
{
AfxMessageBox("创建Connection对象失败!");///显示错误信息
return false;
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
return false;
}
}
void DataModel::CloseConnection()
{
try
{
if(m_pConnection->State)
{
m_pConnection->Close();
}
m_pConnection->Release();
}
catch(_com_error e)
{}
}
void DataModel::FillComboBox(CComboBox *cb,CString query)
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
if(m_pRecordset->State)
m_pRecordset->Close();
try
{
m_pRecordset->CursorLocation=adUseClient;
m_pRecordset->Open(bstr_t(query),m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdUnknown);
_variant_t Holder;
cb->ResetContent();
while(!m_pRecordset->adoEOF)//遍历数据集中的行
{
Holder=m_pRecordset->GetCollect(_variant_t((long)0));//获取此行中第一个字段的值
cb->AddString(bstr_t(Holder));//把值转换成字符串,并添加到里表中
m_pRecordset->MoveNext();//下一行
}
}
catch(_com_error e)
{
}
}
void DataModel::FillComboBox(CComboBox *cb, CString query, CString FirstItem)
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
if(m_pRecordset->State)
m_pRecordset->Close();
try
{
m_pRecordset->CursorLocation=adUseClient;
m_pRecordset->Open(bstr_t(query),m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdUnknown);
_variant_t Holder;
cb->ResetContent();
cb->AddString(FirstItem);//添加第一个项
while(!m_pRecordset->adoEOF)//遍历数据集中的行
{
Holder=m_pRecordset->GetCollect(_variant_t((long)0));//获取此行中第一个字段的值
cb->AddString(bstr_t(Holder));//把值转换成字符串,并添加到里表中
m_pRecordset->MoveNext();//下一行
}
}
catch(_com_error e)
{
}
}
void DataModel::FillListCtrl(CListCtrl *list, CString query)
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
if(m_pRecordset->State)
m_pRecordset->Close();
try
{
int index=0;
int iCount=list->GetHeaderCtrl()->GetItemCount()-1;
list->DeleteAllItems(); // 清除所有项
m_pRecordset->CursorLocation=adUseClient;
m_pRecordset->Open(bstr_t(query),m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdUnknown);
while(!m_pRecordset->adoEOF)//遍历数据集中的行
{
int nRow=list->InsertItem(index++,bstr_t(m_pRecordset->GetCollect("id")));
for(int j=1;j<=iCount;j++)
{
list->SetItemText(nRow,j,bstr_t(m_pRecordset->GetCollect(_variant_t((long)j))));
}
m_pRecordset->MoveNext();//下一行
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("错误信息:%s",e.ErrorMessage()+query);
AfxMessageBox(errormessage);///显示错误信息
}
}
CString DataModel::GetReturnString(CString query)
{
CString str="";
m_pRecordset.CreateInstance(__uuidof(Recordset));
if(m_pRecordset->State)
m_pRecordset->Close();
try
{
m_pRecordset->CursorLocation=adUseClient;
m_pRecordset->Open(bstr_t(query),m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdUnknown);
if(!m_pRecordset->adoEOF)
{
str=(LPCSTR)_bstr_t(m_pRecordset->GetCollect(_variant_t((long)0)));
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("错误信息:%s",e.ErrorMessage()+query);
AfxMessageBox(errormessage);///显示错误信息
}
return str;
}
_RecordsetPtr DataModel::GetRecordset(CString query)
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
if(m_pRecordset->State)
m_pRecordset->Close();
try
{
m_pRecordset->CursorLocation=adUseClient;
m_pRecordset->Open(bstr_t(query),m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdUnknown);
return m_pRecordset;
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("错误信息:%s",e.ErrorMessage()+query);
AfxMessageBox(errormessage);///显示错误信息
}
return NULL;
}
void DataModel::ExecuteSql(CString sql)
{
_variant_t RecordsAffected;
m_pConnection->Execute(bstr_t(sql),&RecordsAffected,adCmdText);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -