📄 drvinfo.cpp
字号:
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 + -