⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datamodel.cpp

📁 手动生成试题系统,还原SQL数据库名称为TestPaper
💻 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 + -