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

📄 mydatabase.cpp

📁 老外写的一个很不错的数据库操作类,用起来很方便,写法也很规范,可以做为学习的范例或实际运用
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				ASSERT(FALSE);
				retcode = -1;
				break;
		}
		if(retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
		{
			SQLCHAR	SqlState[6],Msg[SQL_MAX_MESSAGE_LENGTH];
			SQLINTEGER	NativeError;
			SQLSMALLINT	n,MsgLen;
			SQLRETURN retcode2;
			n = 1;
			CString strMsg;
			while ((retcode2 = SQLGetDiagRec(SQL_HANDLE_STMT, hstmt, n, SqlState, &NativeError,Msg, sizeof(Msg), &MsgLen)) != SQL_NO_DATA) 
			{
				strMsg=Msg;
				AfxMessageBox(strMsg);
				n++;
			}
			return;
		}
	}
}

/*
	The following functions set data for each input parameter,
	or get data from each output parameter.
	There is no tranformation between different types,
	so the data type and the parameter type must be equal.
*/

void	CMyDatabase::SetParam_Bool(UINT nParamId,bool bParamValue)
{
	ASSERT(nParamId>=0);
	ASSERT(nParamId<m_nParams);
	if(m_mapParam[nParamId].m_nDataType != SQL_BIT)
	{
		ASSERT(FALSE);
		return;
	}
	if(m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT && m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT_OUTPUT)
		ASSERT(FALSE);

	m_mapParam[nParamId].m_bVal = bParamValue;
}

void	CMyDatabase::SetParam_Char(UINT nParamId,char chParamValue)
{
	ASSERT(nParamId>=0);
	ASSERT(nParamId<m_nParams);
	if(m_mapParam[nParamId].m_nDataType != SQL_TINYINT)
	{
		ASSERT(FALSE);
		return;
	}
	if(m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT && m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT_OUTPUT)
		ASSERT(FALSE);
	m_mapParam[nParamId].m_chVal = chParamValue;
}

void	CMyDatabase::SetParam_Short(UINT nParamId,short iParamValue)
{
	ASSERT(nParamId>=0);
	ASSERT(nParamId<m_nParams);
	if(m_mapParam[nParamId].m_nDataType != SQL_SMALLINT)
	{
		ASSERT(FALSE);
		return;
	}
	if(m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT && m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT_OUTPUT)
		ASSERT(FALSE);
	m_mapParam[nParamId].m_iVal = iParamValue;
}

void	CMyDatabase::SetParam_Long(UINT nParamId,long nParamValue)
{
	ASSERT(nParamId>=0);
	ASSERT(nParamId<m_nParams);
	if(m_mapParam[nParamId].m_nDataType != SQL_INTEGER)
	{
		ASSERT(FALSE);
		return;
	}
	if(m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT && m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT_OUTPUT)
		ASSERT(FALSE);
	m_mapParam[nParamId].m_lVal = nParamValue;
}

void	CMyDatabase::SetParam_Float(UINT nParamId,float fltParamValue)
{
	ASSERT(nParamId>=0);
	ASSERT(nParamId<m_nParams);
	if(m_mapParam[nParamId].m_nDataType != SQL_REAL)
	{
		ASSERT(FALSE);
		return;
	}
	if(m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT && m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT_OUTPUT)
		ASSERT(FALSE);
	m_mapParam[nParamId].m_fltVal = fltParamValue;
}

void	CMyDatabase::SetParam_Double(UINT nParamId,double dblParamValue)
{
	ASSERT(nParamId>=0);
	ASSERT(nParamId<m_nParams);
	if(m_mapParam[nParamId].m_nDataType != SQL_DOUBLE && m_mapParam[nParamId].m_nDataType != SQL_DECIMAL
		&& m_mapParam[nParamId].m_nDataType != SQL_NUMERIC && m_mapParam[nParamId].m_nDataType != SQL_FLOAT)
	{
		ASSERT(FALSE);
		return;
	}
	if(m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT && m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT_OUTPUT)
		ASSERT(FALSE);
	m_mapParam[nParamId].m_dblVal = dblParamValue;
}

void	CMyDatabase::SetParam_DateTime(UINT nParamId,TIMESTAMP_STRUCT dtParamValue)
{
	ASSERT(nParamId>=0);
	ASSERT(nParamId<m_nParams);
	if(m_mapParam[nParamId].m_nDataType != SQL_TIMESTAMP && m_mapParam[nParamId].m_nDataType != SQL_TYPE_TIMESTAMP
		&& m_mapParam[nParamId].m_nDataType != SQL_DATE && m_mapParam[nParamId].m_nDataType != SQL_TYPE_DATE)
	{
		ASSERT(FALSE);
		return;
	}
	if(m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT && m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT_OUTPUT)
		ASSERT(FALSE);
	m_mapParam[nParamId].m_dtVal.year = dtParamValue.year;
	m_mapParam[nParamId].m_dtVal.month = dtParamValue.month;
	m_mapParam[nParamId].m_dtVal.day = dtParamValue.day;
	m_mapParam[nParamId].m_dtVal.hour = dtParamValue.hour;
	m_mapParam[nParamId].m_dtVal.minute = dtParamValue.minute;
	m_mapParam[nParamId].m_dtVal.second = dtParamValue.second;
	m_mapParam[nParamId].m_dtVal.fraction = dtParamValue.fraction;
}

void	CMyDatabase::SetParam_String(UINT nParamId,CString strParamValue)
{
	ASSERT(nParamId>=0);
	ASSERT(nParamId<m_nParams);
	if(m_mapParam[nParamId].m_nDataType != SQL_CHAR && m_mapParam[nParamId].m_nDataType != SQL_VARCHAR
		&& m_mapParam[nParamId].m_nDataType != SQL_WCHAR && m_mapParam[nParamId].m_nDataType != SQL_WVARCHAR)
	{
		ASSERT(FALSE);
		return;
	}
	if(m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT && m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT_OUTPUT)
		ASSERT(FALSE);
	m_mapParam[nParamId].m_strVal = strParamValue;
}

bool	CMyDatabase::GetParam_Bool(UINT nParamId)
{
	ASSERT(nParamId>=0);
	ASSERT(nParamId<m_nParams);
	if(m_mapParam[nParamId].m_nDataType != SQL_BIT)
	{
		ASSERT(FALSE);
	}
	if(m_mapParam[nParamId].m_nColType != SQL_PARAM_OUTPUT && m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT_OUTPUT)
		ASSERT(FALSE);
	return m_mapParam[nParamId].m_bVal;
}

char	CMyDatabase::GetParam_Char(UINT nParamId)
{
	ASSERT(nParamId>=0);
	ASSERT(nParamId<m_nParams);
	if(m_mapParam[nParamId].m_nDataType != SQL_TINYINT)
	{
		ASSERT(FALSE);
	}
	if(m_mapParam[nParamId].m_nColType != SQL_PARAM_OUTPUT && m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT_OUTPUT)
		ASSERT(FALSE);
	return m_mapParam[nParamId].m_chVal;
}

short	CMyDatabase::GetParam_Short(UINT nParamId)
{
	ASSERT(nParamId>=0);
	ASSERT(nParamId<m_nParams);
	if(m_mapParam[nParamId].m_nDataType != SQL_SMALLINT)
	{
		ASSERT(FALSE);
	}
	if(m_mapParam[nParamId].m_nColType != SQL_PARAM_OUTPUT && m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT_OUTPUT)
		ASSERT(FALSE);
	return m_mapParam[nParamId].m_iVal;
}

long	CMyDatabase::GetParam_Long(UINT nParamId)
{
	ASSERT(nParamId>=0);
	ASSERT(nParamId<m_nParams);
	if(m_mapParam[nParamId].m_nDataType != SQL_INTEGER)
	{
		ASSERT(FALSE);
	}
	if(m_mapParam[nParamId].m_nColType != SQL_PARAM_OUTPUT && m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT_OUTPUT)
		ASSERT(FALSE);
	return m_mapParam[nParamId].m_lVal;
}

float	CMyDatabase::GetParam_Float(UINT nParamId)
{
	ASSERT(nParamId>=0);
	ASSERT(nParamId<m_nParams);
	if(m_mapParam[nParamId].m_nDataType != SQL_REAL)
	{
		ASSERT(FALSE);
	}
	if(m_mapParam[nParamId].m_nColType != SQL_PARAM_OUTPUT && m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT_OUTPUT)
		ASSERT(FALSE);
	return m_mapParam[nParamId].m_fltVal;
}

double	CMyDatabase::GetParam_Double(UINT nParamId)
{
	ASSERT(nParamId>=0);
	ASSERT(nParamId<m_nParams);
	if(m_mapParam[nParamId].m_nDataType != SQL_DOUBLE && m_mapParam[nParamId].m_nDataType != SQL_DECIMAL
		&& m_mapParam[nParamId].m_nDataType != SQL_NUMERIC && m_mapParam[nParamId].m_nDataType != SQL_FLOAT)
	{
		ASSERT(FALSE);
	}
	if(m_mapParam[nParamId].m_nColType != SQL_PARAM_OUTPUT && m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT_OUTPUT)
		ASSERT(FALSE);
	return m_mapParam[nParamId].m_dblVal;
}

TIMESTAMP_STRUCT	CMyDatabase::GetParam_DateTime(UINT nParamId)
{
	ASSERT(nParamId>=0);
	ASSERT(nParamId<m_nParams);
	if(m_mapParam[nParamId].m_nDataType != SQL_TIMESTAMP && m_mapParam[nParamId].m_nDataType != SQL_TYPE_TIMESTAMP
		&& m_mapParam[nParamId].m_nDataType != SQL_DATE && m_mapParam[nParamId].m_nDataType != SQL_TYPE_DATE)
	{
		ASSERT(FALSE);
	}
	if(m_mapParam[nParamId].m_nColType != SQL_PARAM_OUTPUT && m_mapParam[nParamId].m_nColType != SQL_PARAM_INPUT_OUTPUT)
		ASSERT(FALSE);
	return m_mapParam[nParamId].m_dtVal;
}

⌨️ 快捷键说明

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