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

📄 tmdo2005.cpp

📁 vc与公共语言混合编写的访问数据库的代码
💻 CPP
字号:
#include "StdAfx.h"
#include "TMDO2005.h"



CTMDO2005::CTMDO2005(void)
{
	m_SqlConn = nullptr;
	//请将****换成你对应的数据库信息。
	m_strConnectionString = "Application Name=mymymy;user id=**;password=**;initial catalog=db;Server=server;Connect Timeout=200;pooling=true;min pool size=10;max pool size=11;connection reset=true";
}
CTMDO2005::CTMDO2005(CString ConnectionString)
{
	m_SqlConn = nullptr;
	m_strConnectionString = gcnew String(ConnectionString);
}

CTMDO2005::~CTMDO2005(void)
{
	Close();
}

void CTMDO2005::Close()
{
	try{
		
		if(m_SqlConn != (Object^)nullptr && m_SqlConn->State != System::Data::ConnectionState::Closed)
			m_SqlConn->Close();
			m_SqlConn=nullptr;
	}
	catch(Exception ^e){
		TRACE(CString(e->ToString()));
	}
}

bool CTMDO2005::Open()
{
	bool re = false;
	try{
		if(m_SqlConn == (Object^)nullptr){
			m_SqlConn = gcnew SqlConnection(m_strConnectionString);
		}
		if(m_SqlConn->State!= System::Data::ConnectionState::Open)
			m_SqlConn->Open();
		re = true;
	}
	catch(Exception ^e){
		TRACE(CString(e->ToString()));
	}
	return re;
}

gcroot<SqlDataAdapter^> CTMDO2005::GetSqlDataAdapter()
{
	if(!Open())return NULL;
	gcroot<SqlDataAdapter^> re = gcnew SqlDataAdapter();
	return re;
}

bool CTMDO2005::RunProcedure(CString ProcName, gcroot<IDataParameter^> parameters[])
{
	bool re = false;
	gcroot<SqlCommand^> SqlCmd;
	try {
		if (!Open()) return false;
		SqlCmd = gcnew SqlCommand();
		SqlCmd->Connection = m_SqlConn;
		SqlCmd->CommandType = CommandType::StoredProcedure;
		SqlCmd->CommandText = gcnew String(ProcName);
		for(int i=0; i<sizeof(parameters)/sizeof(parameters[0]); i++){
			SqlCmd->Parameters->Add(parameters[i]);
		}
		SqlCmd->ExecuteNonQuery();  
		SqlCmd = nullptr;
		re = true;
	}
	catch(Exception ^e) {
		TRACE(CString(e->ToString()));
	}
	return re;
}

int CTMDO2005::ExecuteScalar(CString sql)
{
	int re = -1;
	gcroot<SqlCommand^> SqlCmd;
	try {
		if (!Open()) return -1;
		SqlCmd = gcnew SqlCommand(gcnew String(sql), m_SqlConn);
		re = Convert::ToInt32(SqlCmd->ExecuteScalar());
		SqlCmd = nullptr;
		Close();
	}
	catch(Exception ^e) {
		TRACE(CString(e->ToString()));
	}
	return re;
}

gcroot<SqlDataReader^> CTMDO2005::ExecuteReader(CString sql)
{
	gcroot<SqlDataReader^> re=nullptr;
	gcroot<SqlCommand^> SqlCmd;
	try {
		if (!Open()) return nullptr;
		SqlCmd = gcnew SqlCommand(gcnew String(sql), m_SqlConn);
		re = SqlCmd->ExecuteReader();
		SqlCmd = nullptr;
	}
	catch(Exception ^e) {
		TRACE(CString(e->ToString()));
	}
	return re;
}

int CTMDO2005::ExecuteNonQuery(CString sql)
{
	int re = -1;
	gcroot<SqlCommand^> SqlCmd;
	try {
		if (!Open()) return -1;
		SqlCmd = gcnew SqlCommand(gcnew String(sql), m_SqlConn);
		re = SqlCmd->ExecuteNonQuery();
		SqlCmd = nullptr;
	}
	catch(Exception ^e) {
		TRACE(CString(e->ToString()));
	}
	return re;
}

bool CTMDO2005::ExecuteSqlTran(CString sqlarray[])
{
	bool re = false;
	gcroot<SqlCommand^> SqlCmd;
	gcroot<SqlTransaction^> tx;
	try {
		if (!Open())return false;
		tx = m_SqlConn->BeginTransaction();
		for(int i=0; i<sizeof(sqlarray)/sizeof(sqlarray[0]); i++){
			SqlCmd = gcnew SqlCommand(gcnew String(sqlarray[i]), m_SqlConn);
			SqlCmd->ExecuteNonQuery();
		}
		tx->Commit();
		re = true;
		SqlCmd = nullptr;
	}
	catch(Exception ^e) {
		TRACE(CString(e->ToString()));
		tx->Rollback();
	}
	return re;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -