📄 drvinfo.cpp
字号:
{
_T("Convert()"), // conversion
_T("Abs()"), // numeric
_T("Acos()"),
_T("Asin()"),
_T("Atan()"),
_T("Atan2()"),
_T("Ceiling()"),
_T("Cos()"),
_T("Cot()"),
_T("Degrees()"),
_T("Exp()"),
_T("Floor()"),
_T("Log()"),
_T("Log10()"),
_T("Mod()"),
_T("Pi()"),
_T("Power()"),
_T("Radians()"),
_T("Rand()"),
_T("Round()"),
_T("Sign()"),
_T("Sin()"),
_T("Sqrt()"),
_T("Tan()"),
_T("Truncate()"),
_T("Ascii()"),
_T("Char()"),
_T("Concat()"),
_T("Difference()"),
_T("Insert()"),
_T("LCase()"),
_T("Left()"),
_T("Lenght()"),
_T("Locate()"),
_T("Locate2()"),
_T("LTrim()"),
_T("Repeat()"),
_T("Replace()"),
_T("Right()"),
_T("RTrim()"),
_T("Soundex()"),
_T("Space()"),
_T("Substring()"),
_T("UCase()"),
_T("DBName()"),
_T("IfNull()"),
_T("UserName()"),
_T("CurDate()"),
_T("CurTime()"),
_T("DayName()"),
_T("DayOfMonth()"),
_T("DayOfWeek()"),
_T("DayOfYear()"),
_T("Hour()"),
_T("Minute()"),
_T("Month()"),
_T("MonthName()"),
_T("Now()"),
_T("Quarter()"),
_T("Second()"),
_T("TimeStampAdd()"),
_T("TimeStampDiff()"),
_T("Week()"),
_T("Year()")
};
LPCTSTR CFunctions::m_szSqlCategories[] =
{
_T("Conversion"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("Numeric"),
_T("String"),
_T("String"),
_T("String"),
_T("String"),
_T("String"),
_T("String"),
_T("String"),
_T("String"),
_T("String"),
_T("String"),
_T("String"),
_T("String"),
_T("String"),
_T("String"),
_T("String"),
_T("String"),
_T("String"),
_T("String"),
_T("String"),
_T("System"),
_T("System"),
_T("System"),
_T("TimeDate"),
_T("TimeDate"),
_T("TimeDate"),
_T("TimeDate"),
_T("TimeDate"),
_T("TimeDate"),
_T("TimeDate"),
_T("TimeDate"),
_T("TimeDate"),
_T("TimeDate"),
_T("TimeDate"),
_T("TimeDate"),
_T("TimeDate"),
_T("TimeDate"),
_T("TimeDate"),
_T("TimeDate"),
_T("TimeDate")
};
LPCTSTR CFunctions::m_szFunctions[] =
{
_T("SQLAllocConnect"),
_T("SQLAllocEnv"),
_T("SQLAllocStmt"),
_T("SQLBindCol"),
_T("SQLCancel"),
_T("SQLColAttributes"),
_T("SQLConnect"),
_T("SQLDescribeCol"),
_T("SQLDisconnect"),
_T("SQLError"),
_T("SQLExecDirect"),
_T("SQLExecute"),
_T("SQLFetch"),
_T("SQLFreeConnect"),
_T("SQLFreeEnv"),
_T("SQLFreeStmt"),
_T("SQLGetCursorName"),
_T("SQLNumResultCols"),
_T("SQLPrepare"),
_T("SQLRowCount"),
_T("SQLSetCursorName"),
_T("SQLSetParam"),
_T("SQLTransact"),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T("SQLColumns"),
_T("SQLDriverConnect"),
_T("SQLGetConnectOption"),
_T("SQLGetData"),
_T("SQLGetFunctions"),
_T("SQLGetInfo"),
_T("SQLGetStmtOption"),
_T("SQLGetTypeInfo"),
_T("SQLParamData"),
_T("SQLPutData"),
_T("SQLSetConnectOption"),
_T("SQLSetStmtOption"),
_T("SQLSpecialColumns"),
_T("SQLStatistics"),
_T("SQLTables"),
_T("SQLBrowseConnect"),
_T("SQLColumnPrivileges"),
_T("SQLDataSources"),
_T("SQLDescribeParam"),
_T("SQLExtendedFetch"),
_T("SQLForeignKeys"),
_T("SQLMoreResults"),
_T("SQLNativeSql"),
_T("SQLNumParams"),
_T("SQLParamOptions"),
_T("SQLPrimaryKeys"),
_T("SQLProcedureColumns"),
_T("SQLProcedures"),
_T("SQLSetPos"),
_T("SQLSetScrollOptions"),
_T("SQLTablePrivileges"),
_T("SQLDrivers"),
_T("SQLBindParameter")
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
_T(""),
};
CFunctions::CFunctions(CDatabase* pDatabase)
: CMyPage(pDatabase, CFunctions::IDD)
{
//{{AFX_DATA_INIT(CFunctions)
//}}AFX_DATA_INIT
m_bSort = true;
}
CFunctions::~CFunctions()
{
}
void CFunctions::DumpToFile(CStdioFile& file)
{
if (m_pDatabase->IsOpen())
{
int i,j;
CString string;
CString padString;
UWORD aFunctions[100];
SDWORD value;
file.WriteString(_T("ODBC API Functions\n------------------\n"));
::SQLGetFunctions(m_pDatabase->m_hdbc,
SQL_API_ALL_FUNCTIONS,aFunctions);
for (i = 0; i < SQL_NUM_FUNCTIONS; i++)
{
if (aFunctions[i + 1])
string.Format(_T("%s - Supported\n"),m_szFunctions[i]);
else
string.Format(_T("%s - Not Supported\n"),m_szFunctions[i]);
padString = _T("");
int nLimit = 21 - lstrlen(m_szFunctions[i]) / sizeof(TCHAR);
if (nLimit > 0)
{
for (j = 0; j < nLimit; j++)
padString += ' ';
file.WriteString(padString);
}
file.WriteString(string);
}
for (i = 0; i < SQL_EXT_API_LAST - SQL_EXT_API_START + 1; i++)
{
if (aFunctions[i + SQL_EXT_API_START])
string.Format(_T("%s - Supported\n"),m_szFunctions[i + SQL_EXT_API_START - 1]);
else
string.Format(_T("%s - Not Supported\n"),m_szFunctions[i + SQL_EXT_API_START - 1]);
padString = _T("");
int nLimit = 21 - lstrlen(m_szFunctions[i + SQL_EXT_API_START - 1]) / sizeof(TCHAR);
if (nLimit > 0)
{
for (j = 0; j < nLimit; j++)
padString += ' ';
file.WriteString(padString);
}
file.WriteString(string);
}
file.WriteString(_T("\n"));
file.WriteString(_T("SQL Conversion Functions\n------------------------\n"));
value = SQLGetInfoLong(SQL_CONVERT_FUNCTIONS);
for (i = 0; i < NUM_CONVERSIONS; i++)
{
if (value & m_dwConversionsMasks[i])
string.Format(_T("%s - Supported\n"),m_szSqlFunctions[CONVERSIONS_START + i]);
else
string.Format(_T("%s - Not Supported\n"),m_szSqlFunctions[CONVERSIONS_START + i]);
padString = _T("");
int nLimit = 21 - lstrlen(m_szSqlFunctions[CONVERSIONS_START + i]) / sizeof(TCHAR);
if (nLimit > 0)
{
for (j = 0; j < nLimit; j++)
padString += ' ';
file.WriteString(padString);
}
file.WriteString(string);
}
file.WriteString(_T("\n"));
file.WriteString(_T("SQL Numeric Functions\n---------------------\n"));
value = SQLGetInfoLong(SQL_NUMERIC_FUNCTIONS);
for (i = 0; i < NUM_NUMERICS; i++)
{
if (value & m_dwNumericMasks[i])
string.Format(_T("%s - Supported\n"),m_szSqlFunctions[NUMERIC_START + i]);
else
string.Format(_T("%s - Not Supported\n"),m_szSqlFunctions[NUMERIC_START + i]);
padString = _T("");
int nLimit = 21 - lstrlen(m_szSqlFunctions[NUMERIC_START + i]) / sizeof(TCHAR);
if (nLimit > 0)
{
for (j = 0; j < nLimit; j++)
padString += ' ';
file.WriteString(padString);
}
file.WriteString(string);
}
file.WriteString(_T("\n"));
file.WriteString(_T("SQL String Functions\n--------------------\n"));
value = SQLGetInfoLong(SQL_STRING_FUNCTIONS);
for (i = 0; i < NUM_STRINGS; i++)
{
if (value & m_dwStringsMasks[i])
string.Format(_T("%s - Supported\n"),m_szSqlFunctions[STRINGS_START + i]);
else
string.Format(_T("%s - Not Supported\n"),m_szSqlFunctions[STRINGS_START + i]);
padString = _T("");
int nLimit = 21 - lstrlen(m_szSqlFunctions[STRINGS_START + i]) / sizeof(TCHAR);
if (nLimit > 0)
{
for (j = 0; j < nLimit; j++)
padString += ' ';
file.WriteString(padString);
}
file.WriteString(string);
}
file.WriteString(_T("\n"));
file.WriteString(_T("SQL System Functions\n--------------------\n"));
value = SQLGetInfoLong(SQL_SYSTEM_FUNCTIONS);
for (i = 0; i < NUM_SYSTEMS; i++)
{
if (value & m_dwSystemsMasks[i])
string.Format(_T("%s - Supported\n"),m_szSqlFunctions[SYSTEMS_START + i]);
else
string.Format(_T("%s - Not Supported\n"),m_szSqlFunctions[SYSTEMS_START + i]);
padString = _T("");
int nLimit = 21 - lstrlen(m_szSqlFunctions[SYSTEMS_START + i]) / sizeof(TCHAR);
if (nLimit > 0)
{
for (j = 0; j < nLimit; j++)
padString += ' ';
file.WriteString(padString);
}
file.WriteString(string);
}
file.WriteString(_T("\n"));
file.WriteString(_T("SQL Time/Date Functions\n-----------------------\n"));
value = SQLGetInfoLong(SQL_TIMEDATE_FUNCTIONS);
for (i = 0; i < NUM_TIMEDATES; i++)
{
if (value & m_dwTimeDatesMasks[i])
string.Format(_T("%s - Supported\n"),m_szSqlFunctions[TIMEDATES_START + i]);
else
string.Format(_T("%s - Not Supported\n"),m_szSqlFunctions[TIMEDATES_START + i]);
padString = _T("");
int nLimit = 21 - lstrlen(m_szSqlFunctions[TIMEDATES_START + i]) / sizeof(TCHAR);
if (nLimit > 0)
{
for (j = 0; j < nLimit; j++)
padString += ' ';
file.WriteString(padString);
}
file.WriteString(string);
}
file.WriteString(_T("\n"));
}
}
void CFunctions::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFunctions)
DDX_Control(pDX, IDC_SQL_FUNCTIONS, m_SqlListControl);
DDX_Control(pDX, IDC_API_FUNCTIONS, m_ApiListControl);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFunctions, CPropertyPage)
//{{AFX_MSG_MAP(CFunctions)
ON_NOTIFY(LVN_COLUMNCLICK, IDC_SQL_FUNCTIONS, OnColumnclickSqlFunctions)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFunctions message handlers
void CFunctions::OnNewDSN()
{
if (::IsWindow(m_hWnd))
{
UWORD aFunctions[100];
BOOL bOpen = m_pDatabase->IsOpen();
SDWORD value;
int nNewItem;
m_ApiListControl.DeleteAllItems();
if (bOpen)
::SQLGetFunctions(m_pDatabase->m_hdbc,
SQL_API_ALL_FUNCTIONS,aFunctions);
for (int i = 0; i < SQL_NUM_FUNCTIONS; i++)
{
if (bOpen && aFunctions[i + 1])
m_ApiListControl.InsertItem(i,m_szFunctions[i],1);
else
m_ApiListControl.InsertItem(i,m_szFunctions[i],0);
}
for (i = 0; i < SQL_EXT_API_LAST - SQL_EXT_API_START + 1; i++)
{
if (bOpen && aFunctions[i+SQL_EXT_API_START])
m_ApiListControl.InsertItem(i+SQL_NUM_FUNCTIONS,
m_szFunctions[i+SQL_EXT_API_START-1],1);
else
m_ApiListControl.InsertItem(i+SQL_NUM_FUNCTIONS,
m_szFunctions[i+SQL_EXT_API_START-1],0);
}
m_SqlListControl.DeleteAllItems();
// conversion function
if (bOpen)
value = SQLGetInfoLong(SQL_CONVERT_FUNCTIONS);
for (i = 0; i < NUM_CONVERSIONS; i++)
{
if (bOpen && (value & m_dwConversionsMasks[i]))
nNewItem = m_SqlListControl.InsertItem(CONVERSIONS_START + i,
m_szSqlFunctions[CONVERSIONS_START + i],1);
else
nNewItem = m_SqlListControl.InsertItem(CONVERSIONS_START + i,
m_szSqlFunctions[CONVERSIONS_START + i],0);
m_SqlListControl.SetItem(nNewItem,1,LVIF_TEXT,
m_szSqlCategories[CONVERSIONS_START + i],0,0,0,0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -