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

📄 database.cpp

📁 比较简陋的数据库应用,唯一能看的就是对ODBC的封装...
💻 CPP
字号:
#include "Database.h"


Database::Database()
{	
	m_henv = NULL;
	m_hdbc = NULL;
	isOpen = false;
}

Database::~Database()
{
	if (isOpen)
		Close();
}

bool Database::IsOpen()
{
	return isOpen;
}

bool Database::Open(String DSN, String user, String pass)
{
	SQLRETURN ret;
	if (isOpen || (ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &m_henv)) != SQL_SUCCESS)
		return false;
	SQLSetEnvAttr(m_henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, NULL);
	if ((ret = SQLAllocHandle(SQL_HANDLE_DBC, m_henv, &m_hdbc) != SQL_SUCCESS))
	{
		SQLFreeHandle(SQL_HANDLE_ENV, m_henv);
		return false;
	}
	if ((ret = SQLConnect(m_hdbc, DSN, SQL_NTS, user, SQL_NTS, pass, SQL_NTS)) != SQL_SUCCESS)
	{
		SQLFreeHandle(SQL_HANDLE_DBC, m_hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV, m_henv);
		return false;
	}
	isOpen = true;
	return true;
}

void Database::Close()
{
	if (isOpen)
	{
		SQLDisconnect(m_hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC, m_hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV, m_henv);
		isOpen = false;
	}
}


bool Database::Exec(SQLTCHAR* strSQL)
{
	SQLRETURN ret;
	HSTMT stmt;
	bool flag = true;
	if (!isOpen || (ret = SQLAllocHandle(SQL_HANDLE_STMT, m_hdbc, &stmt)) != SQL_SUCCESS)
		return false;
	if ((ret = SQLExecDirect(stmt, strSQL, SQL_NTS)) != SQL_SUCCESS)
		flag = false;
	SQLFreeHandle(SQL_HANDLE_STMT, stmt);
	return flag;
}

⌨️ 快捷键说明

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