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

📄 drvinfo.cpp

📁 快速SQL交互工具
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		file.WriteString(_T("-----------         --------          ---------   ---------  ---------\n"));
		if (m_pGetTypeInfo)
		{
			if (m_pGetTypeInfo->IsOpen())
				m_pGetTypeInfo->Close();
			delete m_pGetTypeInfo;
		}

		m_pGetTypeInfo = new CGetTypeInfo(m_pDatabase);
		m_pGetTypeInfo->Open();

		while (!m_pGetTypeInfo->IsEOF())
		{
			string = m_pGetTypeInfo->m_strTypeName;
			while (string.GetLength() < 20)
				string += ' ';
			switch (m_pGetTypeInfo->m_fDataType)
			{
			case SQL_BIGINT:
				string += _T("SQL_BIGINT        ");
				break;
			case SQL_BINARY:
				string += _T("SQL_BINARY        ");
				break;
			case SQL_BIT:
				string += _T("SQL_BIT           ");
				break;
			case SQL_CHAR:
				string += _T("SQL_CHAR          ");
				break;
			case SQL_DATE:
				string += _T("SQL_DATE          ");
				break;
			case SQL_DECIMAL:
				string += _T("SQL_DECIMAL       ");
				break;
			case SQL_DOUBLE:
				string += _T("SQL_DOUBLE        ");
				break;
			case SQL_FLOAT:
				string += _T("SQL_FLOAT         ");
				break;
			case SQL_INTEGER:
				string += _T("SQL_INTEGER       ");
				break;
			case SQL_LONGVARBINARY:
				string += _T("SQL_LONGVARBINARY ");
				break;
			case SQL_LONGVARCHAR:
				string += _T("SQL_LONGVARCHAR   ");
				break;
			case SQL_NUMERIC:
				string += _T("SQL_NUMERIC       ");
				break;
			case SQL_REAL:
				string += _T("SQL_REAL          ");
				break;
			case SQL_SMALLINT:
				string += _T("SQL_SMALLINT      ");
				break;
			case SQL_TIME:
				string += _T("SQL_TIME          ");
				break;
			case SQL_TIMESTAMP:
				string += _T("SQL_TIMESTAMP     ");
				break;
			case SQL_TINYINT:
				string += _T("SQL_TINYINT       ");
				break;
			case SQL_VARBINARY:
				string += _T("SQL_VARBINARY     ");
				break;
			case SQL_VARCHAR:
				string += _T("SQL_VARCHAR       ");
				break;
			default:
				string += _T("<unknown type>    ");
				break;
			}
			if (m_pGetTypeInfo->IsFieldNull(&(m_pGetTypeInfo->m_nPrecision)))
				string += _T("<n/a>       ");
			else
			{
				workString.Format(_T("%-11d "),m_pGetTypeInfo->m_nPrecision);
				string += workString;
			}
			if (m_pGetTypeInfo->IsFieldNull(&(m_pGetTypeInfo->m_nMinimumScale)))
				string += _T("<n/a>      ");
			else
			{
				workString.Format(_T("%-5d      "),m_pGetTypeInfo->m_nMinimumScale);
				string += workString;
			}
			if (m_pGetTypeInfo->IsFieldNull(&(m_pGetTypeInfo->m_nMaximumScale)))

				string += _T("<n/a>      \n");
			else
			{
				workString.Format(_T("%-5d\n"),m_pGetTypeInfo->m_nMaximumScale);
				string += workString;
			}

			file.WriteString(string);

			m_pGetTypeInfo->MoveNext();
		}
		file.WriteString(_T("\n"));
		m_pGetTypeInfo->Close();
		delete m_pGetTypeInfo;

		file.WriteString(_T("Native type         Nullable  Unsigned  Auto Inc  Money  Case Sensitive\n"));
		file.WriteString(_T("-----------         --------  --------  --------  -----  --------------\n"));
		m_pGetTypeInfo = new CGetTypeInfo(m_pDatabase);
		m_pGetTypeInfo->Open();

		while (!m_pGetTypeInfo->IsEOF())
		{
			string = m_pGetTypeInfo->m_strTypeName;
			while (string.GetLength() < 20)
				string += ' ';
			switch (m_pGetTypeInfo->m_fNullable)
			{
			case SQL_NO_NULLS:
				string += _T("No        ");
				break;
			case SQL_NULLABLE:
				string += _T("Yes       ");
				break;
			case SQL_NULLABLE_UNKNOWN:
			default:
				string += _T("Unknown   ");
				break;
			}

			if (m_pGetTypeInfo->IsFieldNull(&(m_pGetTypeInfo->m_fUnsignedAttribute)))
				string += _T("<n/a>     ");
			else if (m_pGetTypeInfo->m_fUnsignedAttribute)
				string += _T("Yes       ");
			else
				string += _T("No        ");

			if (m_pGetTypeInfo->IsFieldNull(&(m_pGetTypeInfo->m_fAutoIncrement)))
				string += _T("<n/a>     ");
			else if (m_pGetTypeInfo->m_fAutoIncrement)
				string += _T("Yes       ");
			else
				string += _T("No        ");

			if (m_pGetTypeInfo->m_bMoney)
				string += _T("Yes    ");
			else
				string += _T("No     ");

			if (m_pGetTypeInfo->m_bCaseSensitive)
				string += _T("Yes\n");
			else
				string += _T("No\n");

			file.WriteString(string);

			m_pGetTypeInfo->MoveNext();
		}
		file.WriteString(_T("\n"));
		m_pGetTypeInfo->Close();
		delete m_pGetTypeInfo;

		file.WriteString(_T("Native type         Lit. Prefix,Suffix  Create Params    Searchable\n"));
		file.WriteString(_T("-----------         ------------------  -------------    ----------\n"));
		m_pGetTypeInfo = new CGetTypeInfo(m_pDatabase);
		m_pGetTypeInfo->Open();

		while (!m_pGetTypeInfo->IsEOF())
		{
			string = m_pGetTypeInfo->m_strTypeName;
			while (string.GetLength() < 20)
				string += ' ';

			if (m_pGetTypeInfo->IsFieldNull(&(m_pGetTypeInfo->m_strLiteralPrefix)))
				workString = _T("<n/a>");
			else
				workString = m_pGetTypeInfo->m_strLiteralPrefix;
			workString += ',';
			if (m_pGetTypeInfo->IsFieldNull(&(m_pGetTypeInfo->m_strLiteralSuffix)))
				workString += _T("<n/a>");
			else
				workString += m_pGetTypeInfo->m_strLiteralSuffix;
			while (workString.GetLength() < 20)
				workString += ' ';
			string += workString;
			if (m_pGetTypeInfo->IsFieldNull(&(m_pGetTypeInfo->m_strCreateParams)))
				string += _T("<none>           ");
			else
			{
				workString = m_pGetTypeInfo->m_strCreateParams;
				while (workString.GetLength() < 17)
					workString += ' ';
				string += workString;
			}
			switch (m_pGetTypeInfo->m_fSearchable)
			{
			case SQL_UNSEARCHABLE:
				string += _T("No\n");
				break;
			case SQL_LIKE_ONLY:
				string += _T("Only with LIKE\n");
				break;
			case SQL_ALL_EXCEPT_LIKE:
				string += _T("with all except LIKE\n");
				break;
			case SQL_SEARCHABLE:
				string += _T("Yes\n");
				break;
			}

			file.WriteString(string);

			m_pGetTypeInfo->MoveNext();
		}
		file.WriteString(_T("\n"));
		m_pGetTypeInfo->Close();
		delete m_pGetTypeInfo;

		file.WriteString(_T("Native type         Convert() Conversions\n"));
		file.WriteString(_T("-----------         ---------------------\n"));
		m_pGetTypeInfo = new CGetTypeInfo(m_pDatabase);
		m_pGetTypeInfo->Open();

		while (!m_pGetTypeInfo->IsEOF())
		{
			string = m_pGetTypeInfo->m_strTypeName;
			while (string.GetLength() < 20)
				string += ' ';

			switch (m_pGetTypeInfo->m_fDataType)
			{
			case SQL_BIGINT:
				value = SQLGetInfoLong(SQL_CONVERT_BIGINT);
				break;
			case SQL_BINARY:
				value = SQLGetInfoLong(SQL_CONVERT_BINARY);
				break;
			case SQL_BIT:
				value = SQLGetInfoLong(SQL_CONVERT_BIT);
				break;
			case SQL_CHAR:
				value = SQLGetInfoLong(SQL_CONVERT_CHAR);
				break;
			case SQL_DATE:
				value = SQLGetInfoLong(SQL_CONVERT_DATE);
				break;
			case SQL_DECIMAL:
				value = SQLGetInfoLong(SQL_CONVERT_DECIMAL);
				break;
			case SQL_DOUBLE:
				value = SQLGetInfoLong(SQL_CONVERT_DOUBLE);
				break;
			case SQL_FLOAT:
				value = SQLGetInfoLong(SQL_CONVERT_FLOAT);
				break;
			case SQL_INTEGER:
				value = SQLGetInfoLong(SQL_CONVERT_INTEGER);
				break;
			case SQL_LONGVARBINARY:
				value = SQLGetInfoLong(SQL_CONVERT_LONGVARBINARY);
				break;
			case SQL_LONGVARCHAR:
				value = SQLGetInfoLong(SQL_CONVERT_LONGVARCHAR);
				break;
			case SQL_NUMERIC:
				value = SQLGetInfoLong(SQL_CONVERT_NUMERIC);
				break;
			case SQL_REAL:
				value = SQLGetInfoLong(SQL_CONVERT_REAL);
				break;
			case SQL_SMALLINT:
				value = SQLGetInfoLong(SQL_CONVERT_SMALLINT);
				break;
			case SQL_TIME:
				value = SQLGetInfoLong(SQL_CONVERT_TIME);
				break;
			case SQL_TIMESTAMP:
				value = SQLGetInfoLong(SQL_CONVERT_TIMESTAMP);
				break;
			case SQL_TINYINT:
				value = SQLGetInfoLong(SQL_CONVERT_TINYINT);
				break;
			case SQL_VARBINARY:
				value = SQLGetInfoLong(SQL_CONVERT_VARBINARY);
				break;
			case SQL_VARCHAR:
				value = SQLGetInfoLong(SQL_CONVERT_VARCHAR);
				break;
			default:
				value = 0;
				break;
			}
			if (!value)
				string += _T("<none>");
			else
			{
				BOOL    b = FALSE;
				PrintConversions(b,value,SQL_CVT_BIGINT,string,_T("SQL_BIGINT"),file);
				PrintConversions(b,value,SQL_CVT_BINARY,string,_T("SQL_BINARY"),file);
				PrintConversions(b,value,SQL_CVT_BIT,string,_T("SQL_BIT"),file);
				PrintConversions(b,value,SQL_CVT_CHAR,string,_T("SQL_CHAR"),file);
				PrintConversions(b,value,SQL_CVT_DATE,string,_T("SQL_DATE"),file);
				PrintConversions(b,value,SQL_CVT_DECIMAL,string,_T("SQL_DECIMAL"),file);
				PrintConversions(b,value,SQL_CVT_DOUBLE,string,_T("SQL_DOUBLE"),file);
				PrintConversions(b,value,SQL_CVT_FLOAT,string,_T("SQL_FLOAT"),file);
				PrintConversions(b,value,SQL_CVT_INTEGER,string,_T("SQL_INTEGER"),file);
				PrintConversions(b,value,SQL_CVT_LONGVARBINARY,string,_T("SQL_LONGVARBINARY"),file);
				PrintConversions(b,value,SQL_CVT_LONGVARCHAR,string,_T("SQL_LONGVARCHAR"),file);
				PrintConversions(b,value,SQL_CVT_NUMERIC,string,_T("SQL_NUMERIC"),file);
				PrintConversions(b,value,SQL_CVT_REAL,string,_T("SQL_REAL"),file);
				PrintConversions(b,value,SQL_CVT_SMALLINT,string,_T("SQL_SMALLINT"),file);
				PrintConversions(b,value,SQL_CVT_TIME,string,_T("SQL_TIME"),file);
				PrintConversions(b,value,SQL_CVT_TIMESTAMP,string,_T("SQL_TIMESTAMP"),file);
				PrintConversions(b,value,SQL_CVT_TINYINT,string,_T("SQL_TINYINT"),file);
				PrintConversions(b,value,SQL_CVT_VARBINARY,string,_T("SQL_VARBINARY"),file);
				PrintConversions(b,value,SQL_CVT_VARCHAR,string,_T("SQL_VARCHAR"),file);
			}
			string += _T("\n\n");

			file.WriteString(string);

			m_pGetTypeInfo->MoveNext();
		}
		file.WriteString(_T("\n"));
		m_pGetTypeInfo->Close();

		delete m_pGetTypeInfo;
		m_pGetTypeInfo = 0;
		file.WriteString(_T("\n"));

	}
}

void CDataTypes::PrintConversions(BOOL& flag,SDWORD value,SDWORD mask,
					  CString& string,const CString& strType,CStdioFile& file)
{
	CString workString;
	if (value & mask)
	{
		if (string.GetLength() + strType.GetLength() > 75)
		{
			string += _T("\n");
			file.WriteString(string);
			string = _T("                    ") + strType;
		}
		else
		{
			if (flag)
				string += _T(",");
			string += strType;
		}
		flag = TRUE;
	}
}

void CDataTypes::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDataTypes)
	DDX_Control(pDX, IDC_CONVERSIONS, m_lbConversions);
	DDX_Control(pDX, IDC_DATA_TYPE_LIST, m_lbDataTypes);
	DDX_Text(pDX, IDC_SQL_TYPE, m_strSqlType);
	DDX_Text(pDX, IDC_PRECISION, m_strPrecision);
	DDX_Text(pDX, IDD_PREFIX_SUFFIX, m_strPrefixSuffix);
	DDX_Text(pDX, IDD_CREATE_PARAMS, m_strCreateParams);
	DDX_Text(pDX, IDC_NULLABLE, m_strNullable);
	DDX_Text(pDX, IDC_CASE_SENSITIVE, m_strCaseSensitive);
	DDX_Text(pDX, IDC_SEARCHABLE, m_strSearchable);
	DDX_Text(pDX, IDC_MONEY, m_strMoney);
	DDX_Text(pDX, IDC_UNSIGNED, m_strUnsigned);
	DDX_Text(pDX, IDC_AUTO_INCREMENT, m_strAutoIncrement);
	DDX_Text(pDX, IDC_MAXIMUM_SCALE, m_strMaximumScale);
	DDX_Text(pDX, IDC_MINIMUM_SCALE, m_strMinimumScale);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CDataTypes, CPropertyPage)
	//{{AFX_MSG_MAP(CDataTypes)
	ON_LBN_SELCHANGE(IDC_DATA_TYPE_LIST, OnSelchangeDataTypeList)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDataTypes message handlers

void CDataTypes::OnNewDSN()
{
	if (IsWindow(m_hWnd) && m_pDatabase->IsOpen())
	{
		if (m_pGetTypeInfo)
		{
			if (m_pGetTypeInfo->IsOpen())
				m_pGetTypeInfo->Close();
			delete m_pGetTypeInfo;
		}

		// delete type data list
		TYPEDATA*   p1 = m_pTypeDataHead;
		TYPEDATA*   p2;
		while (p1)
		{
			p2 = p1;
			p1 = p1->pNext;
			delete p2;
		}
		m_pTypeDataHead = m_pTypeDataTail = 0;

		m_lbDataTypes.ResetContent();
		m_pGetTypeInfo = new CGetTypeInfo(m_pDatabase);
		m_pGetTypeInfo->Open();
		while (!m_pGetTypeInfo->IsEOF())
		{
			TYPEDATA*   pTypeData = new TYPEDATA;
			pTypeData->strTypeName = m_pGetTypeInfo->m_strTypeName;
			pTypeData->nSqlType = m_pGetTypeInfo->m_fDataType;
			if (m_pGetTypeInfo->IsFieldNull(&(m_pGetTypeInfo->m_nPrecision)))
				pTypeData->nPrecision = -1;
			else
				pTypeData->nPrecision = m_pGetTypeInfo->m_nPrecision;
			if (m_pGetTypeInfo->IsFieldNull(&(m_pGetTypeInfo->m_strLiteralPrefix)))
				pTypeData->strLiteralPrefix = "";
			else
				pTypeData->strLiteralPrefix = m_pGetTypeInfo->m_strLiteralPrefix;
			if (m_pGetTypeInfo->IsFieldNull(&(m_pGetTypeInfo->m_strLiteralSuffix)))
				pTypeData->strLiteralSuffix = "";
			else
				pTypeData->strLiteralSuffix = m_pGetTypeInfo->m_strLiteralSuffix;
			if (m_pGetTypeInfo->IsFieldNull(&(m_pGetTypeInfo->m_strCreateParams)))
				pTypeData->strCreateParams = "";
			else
				pTypeData->strCreateParams = m_pGetTypeInfo->m_strCreateParams;
			pTypeData->nNullable = m_pGetTypeInfo->m_fNullable;
			pTypeData->bCaseSensitive = m_pGetTypeInfo->m_bCaseSensitive;
			pTypeData->nSearchable = m_pGetTypeInfo->m_fSearchable;
			if (m_pGetTypeInfo->IsFieldNull(
				&(m_pGetTypeInfo->m_fUnsignedAttribute)))
			{
				pTypeData->nUnsigned = -1;
			}
			else if (m_pGetTypeInfo->m_fUnsignedAttribute)
				pTypeData->nUnsigned = 1;
			else
				pTypeData->nUnsigned = 0;
			pTypeData->bMoney = m_pGetTypeInfo->m_bMoney;
			if (m_pGetTypeInfo->IsFieldNull(
				&(m_pGetTypeInfo->m_fAutoIncrement)))
			{
				pTypeData->nAutoIncrement = -1;
			}
			else if (m_pGetTypeInfo->m_fAutoIncrement)
				pTypeData->nAutoIncrement = 1;
			else
				pTypeData->nAutoIncrement = 0;
			if (m_pGetTypeInfo->IsFieldNull(&(m_pGetTypeInfo->m_nMinimumScale)))
				pTypeData->nMinimumScale = -1;
			else
				pTypeData->nMinimumScale = m_pGetTypeInfo->m_nMinimumScale;
			if (m_pGetTypeInfo->IsFieldNull(&(m_pGetTypeInfo->m_nMaximumScale)))
				pTypeData->nMaximumScale = -1;
			else
				pTypeData->nMaximumScale = m_pGetTypeInfo->m_nMaximumScale;

⌨️ 快捷键说明

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