📄 datalink.cpp
字号:
{
CString select_list = GetSelectList();
return SqlString_ColumnCount(select_list);
}
CString CSqlString::GetColumnAlias(int nIndex)
{
int nStart, nCount;
// get select list;
CString select_list = GetSelectList();
SqlString_ColumnItem(select_list, nIndex, nStart, nCount);
// get column expression
CString column_item = select_list.Mid(nStart, nCount);
SqlString_ColumnAlias(column_item, nStart, nCount);
if (column_item[nStart] == _T('[') && column_item[nStart+nCount] == _T(']'))
{
// 脱去"[]"
nStart++;
nCount -= 2;
}
return column_item.Mid(nStart, nCount);
}
CString CSqlString::GetColumnName(int nIndex)
{
int nStart, nCount;
CString select_list = GetSelectList();
SqlString_ColumnItem(select_list, nIndex, nStart, nCount);
CString column_item = select_list.Mid(nStart, nCount);
SqlString_ColumnName(column_item, nStart, nCount);
return column_item.Mid(nStart, nCount);
}
CString CSqlString::GetColumnName(LPCTSTR lpszAlias)
{
int nStart, nCount;
CString select_list = GetSelectList();
int nIndex = SqlString_ColumnIndex(select_list, lpszAlias);
SqlString_ColumnItem(select_list, nIndex, nStart, nCount);
CString column_item = select_list.Mid(nStart, nCount);
SqlString_ColumnName(column_item, nStart, nCount);
return column_item.Mid(nStart, nCount);
}
int CSqlString::GetColumnIndex(LPCTSTR lpszAlias)
{
CString select_list = GetSelectList();
CString strAlias(lpszAlias);
SqlString_Alias(strAlias);
return SqlString_ColumnIndex(select_list, strAlias);
}
void CSqlString::SetColumnAlias(int nIndex, LPCTSTR lpszAlias)
{
int nStart1, nCount1;
SqlString_SelectList(*this, nStart1, nCount1);
CString select_list = Mid(nStart1, nCount1);
int nStart2, nCount2;
if (!SqlString_ColumnItem(select_list, nIndex, nStart2, nCount2))
return;
CString column_item = select_list.Mid(nStart2, nCount2);
int nStart3, nCount3;
if (!SqlString_ColumnAlias(column_item, nStart3, nCount3))
SqlString_Insert(column_item, nStart3, "as ");
CString strAlias(lpszAlias);
SqlString_Alias(strAlias);
SqlString_Stuff(column_item, nStart3, nCount3, strAlias);
SqlString_Stuff(select_list, nStart2, nCount2, column_item);
SqlString_Stuff(*this, nStart1, nCount1, select_list);
}
void CSqlString::SetColumnName(int nIndex, LPCTSTR lpszName)
{
int nStart1, nCount1;
SqlString_SelectList(*this, nStart1, nCount1);
CString select_list = Mid(nStart1, nCount1);
int nStart2, nCount2;
if (!SqlString_ColumnItem(select_list, nIndex, nStart2, nCount2))
return;
CString column_item = select_list.Mid(nStart2, nCount2);
int nStart3, nCount3;
SqlString_ColumnName(column_item, nStart3, nCount3);
SqlString_Stuff(column_item, nStart3, nCount3, lpszName);
SqlString_Stuff(select_list, nStart2, nCount2, column_item);
SqlString_Stuff(*this, nStart1, nCount1, select_list);
}
void CSqlString::SetColumnName(LPCTSTR lpszAlias, LPCTSTR lpszName)
{
int nStart1, nCount1;
SqlString_SelectList(*this, nStart1, nCount1);
CString select_list = Mid(nStart1, nCount1);
int nStart2, nCount2;
CString strAlias(lpszAlias);
SqlString_Alias(strAlias);
int nIndex = SqlString_ColumnIndex(select_list, strAlias);
if (!SqlString_ColumnItem(select_list, nIndex, nStart2, nCount2))
return;
CString column_item = select_list.Mid(nStart2, nCount2);
int nStart3, nCount3;
SqlString_ColumnName(column_item, nStart3, nCount3);
SqlString_Stuff(column_item, nStart3, nCount3, lpszName);
SqlString_Stuff(select_list, nStart2, nCount2, column_item);
SqlString_Stuff(*this, nStart1, nCount1, select_list);
}
int CSqlString::InsertColumn(int nIndex, LPCTSTR lpszName)
{
int nStart1, nCount1;
SqlString_SelectList(*this, nStart1, nCount1);
CString select_list = Mid(nStart1, nCount1);
if (nIndex == -1)
nIndex = SqlString_ColumnCount(select_list);
int nStart2, nCount2;
if (!SqlString_ColumnItem(select_list, nIndex, nStart2, nCount2))
nIndex = SqlString_ColumnCount(select_list);
select_list.Insert(nStart2, _T(','));
select_list.Insert(nStart2, lpszName);
SqlString_Stuff(*this, nStart1, nCount1, select_list);
return nIndex;
}
void CSqlString::DeleteColumn(int nIndex)
{
int nStart1, nCount1;
SqlString_SelectList(*this, nStart1, nCount1);
CString select_list = Mid(nStart1, nCount1);
int nStart2, nCount2;
if (!SqlString_ColumnItem(select_list, nIndex, nStart2, nCount2))
return;
select_list.Delete(nStart2, nCount2+1);
if (nStart2 == select_list.GetLength())
select_list.Delete(nStart2 - 1, 1);
SqlString_Stuff(*this, nStart1, nCount1, select_list);
}
// table_source
CString CSqlString::GetTableSource()
{
int nIndex, nCount;
SqlString_TableSource(*this, nIndex, nCount);
return Mid(nIndex, nCount);
}
void CSqlString::SetTableSource(LPCTSTR lpszTableSource)
{
int nIndex, nCount;
if (!SqlString_TableSource(*this, nIndex, nCount))
SqlString_Insert(*this, nIndex, _T("from "));
SqlString_Stuff(*this, nIndex, nCount, lpszTableSource);
}
// table_alias, table_name and joined_table
int CSqlString::GetTableCount()
{
int nStart, nCount;
SqlString_Table(*this, nStart, nCount);
CString table = Mid(nStart, nCount);
return SqlString_TableCount(table);
}
CString CSqlString::GetTableAlias(int nIndex)
{
int nStart, nCount;
SqlString_Table(*this, nStart, nCount);
CString table = Mid(nStart, nCount);
int nStart1, nCount1;
SqlString_TableItem(table, nIndex, nStart1, nCount1);
CString table_item = table.Mid(nStart1, nCount1);
int nStart2, nCount2;
SqlString_TableAlias(table_item, nIndex, nStart2, nCount2);
if (table_item[nStart2] == _T('[') && table_item[nStart2+nCount2] == _T(']'))
{
// 脱去"[]"
nStart2++;
nCount2 -= 2;
}
return table_item.Mid(nStart2, nCount2);
}
CString CSqlString::GetTableName(int nIndex)
{
int nStart, nCount;
SqlString_Table(*this, nStart, nCount);
CString table = Mid(nStart, nCount);
int nStart1, nCount1;
SqlString_TableItem(table, nIndex, nStart1, nCount1);
CString table_item = table.Mid(nStart1, nCount1);
int nStart2, nCount2;
SqlString_TableName(table_item, nIndex, nStart2, nCount2);
return table_item.Mid(nStart2, nCount2);
}
CString CSqlString::GetTableName(LPCTSTR lpszAlias)
{
int nStart, nCount;
SqlString_Table(*this, nStart, nCount);
CString table = Mid(nStart, nCount);
int nStart1, nCount1;
int nIndex = SqlString_TableIndex(table, lpszAlias);
SqlString_TableItem(table, nIndex, nStart1, nCount1);
CString table_item = table.Mid(nStart1, nCount1);
int nStart2, nCount2;
SqlString_TableName(table_item, nIndex, nStart2, nCount2);
return table_item.Mid(nStart2, nCount2);
}
int CSqlString::GetTableIndex(LPCTSTR lpszAlias)
{
int nStart, nCount;
SqlString_Table(*this, nStart, nCount);
CString table = Mid(nStart, nCount);
CString strAlias(lpszAlias);
SqlString_Alias(strAlias);
return SqlString_TableIndex(table, strAlias);
}
void CSqlString::SetTableAlias(int nIndex, LPCTSTR lpszAlias)
{
int nStart1, nCount1;
SqlString_Table(*this, nStart1, nCount1);
CString table = Mid(nStart1, nCount1);
int nStart2, nCount2;
if (!SqlString_TableItem(table, nIndex, nStart2, nCount2))
return;
CString table_item = table.Mid(nStart2, nCount2);
int nStart3, nCount3;
SqlString_TableAlias(table_item, nIndex, nStart3, nCount3);
CString strAlias(lpszAlias);
SqlString_Alias(strAlias);
if (nCount3 == 0)
SqlString_Insert(table_item, nStart3, strAlias);
else
SqlString_Stuff(table_item, nStart3, nCount3, strAlias);
SqlString_Stuff(table, nStart2, nCount2, table_item);
SqlString_Stuff(*this, nStart1, nCount1, table);
}
void CSqlString::SetTableName(int nIndex, LPCTSTR lpszName)
{
int nStart1, nCount1;
SqlString_Table(*this, nStart1, nCount1);
CString table = Mid(nStart1, nCount1);
int nStart2, nCount2;
if (!SqlString_TableItem(table, nIndex, nStart2, nCount2))
return;
CString table_item = table.Mid(nStart2, nCount2);
int nStart3, nCount3;
SqlString_TableName(table_item, nIndex, nStart3, nCount3);
SqlString_Stuff(table_item, nStart3, nCount3, lpszName);
SqlString_Stuff(table, nStart2, nCount2, table_item);
SqlString_Stuff(*this, nStart1, nCount1, table);
}
void CSqlString::SetTableName(LPCTSTR lpszAlias, LPCTSTR lpszName)
{
int nStart1, nCount1;
SqlString_Table(*this, nStart1, nCount1);
CString table = Mid(nStart1, nCount1);
int nStart2, nCount2;
CString strAlias(lpszAlias);
SqlString_Alias(strAlias);
int nIndex = SqlString_TableIndex(table, strAlias);
if (!SqlString_TableItem(table, nIndex, nStart2, nCount2))
return;
CString table_item = table.Mid(nStart2, nCount2);
int nStart3, nCount3;
SqlString_TableName(table_item, nIndex, nStart3, nCount3);
SqlString_Stuff(table_item, nStart3, nCount3, lpszName);
SqlString_Stuff(table, nStart2, nCount2, table_item);
SqlString_Stuff(*this, nStart1, nCount1, table);
}
int CSqlString::InsertTable(int nIndex, LPCTSTR lpszName)
{
int nStart1, nCount1;
SqlString_Table(*this, nStart1, nCount1);
CString table = Mid(nStart1, nCount1);
if (nIndex == -1)
nIndex = SqlString_TableCount(table);
int nStart2, nCount2;
if (!SqlString_TableItem(table, nIndex, nStart2, nCount2))
nIndex = SqlString_TableCount(table);
table.Insert(nStart2, _T(','));
table.Insert(nStart2, lpszName);
SqlString_Stuff(*this, nStart1, nCount1, table);
return nIndex;
}
void CSqlString::DeleteTable(int nIndex)
{
int nStart1, nCount1;
SqlString_Table(*this, nStart1, nCount1);
CString table = Mid(nStart1, nCount1);
int nStart2, nCount2;
if (!SqlString_TableItem(table, nIndex, nStart2, nCount2))
return;
table.Delete(nStart2, nCount2+1);
if (nStart2 == table.GetLength())
table.Delete(nStart2 - 1, 1);
SqlString_Stuff(*this, nStart1, nCount1, table);
}
// joined_table
CString CSqlString::GetJoinedTable()
{
int nIndex, nCount;
SqlString_JoinedTable(*this, nIndex, nCount);
return Mid(nIndex, nCount);
}
void CSqlString::SetJoinedTable(LPCTSTR lpszJoinedTable)
{
int nIndex, nCount;
SqlString_JoinedTable(*this, nIndex, nCount);
SqlString_Stuff(*this, nIndex, nCount, lpszJoinedTable);
}
int CSqlString::GetJoinedTableCount()
{
CString joined_table = GetJoinedTable();
return SqlString_JoinedTableCount(joined_table);
}
CString CSqlString::GetJoinedTableAlias(int nIndex)
{
int nStart1, nCount1;
CString joined_table = GetJoinedTable();
SqlString_JoinedTableItem(joined_table, nIndex, nStart1, nCount1);
CString table_item = joined_table.Mid(nStart1, nCount1);
int nStart2, nCount2;
SqlString_JoinedTableAlias(table_item, nStart2, nCount2);
if (table_item[nStart2] == _T('[') && table_item[nStart2+nCount2] == _T(']'))
{
// 脱去"[]"
nStart2++;
nCount2 -= 2;
}
return table_item.Mid(nStart2, nCount2);
}
CString CSqlString::GetJoinedTableName(int nIndex)
{
int nStart1, nCount1;
CString joined_table = GetJoinedTable();
SqlString_JoinedTableItem(joined_table, nIndex, nStart1, nCount1);
CString table_item = joined_table.Mid(nStart1, nCount1);
int nStart2, nCount2;
SqlString_JoinedTableName(table_item, nStart2, nCount2);
return table_item.Mid(nStart2, nCount2);
}
CString CSqlString::GetJoinedTableName(LPCTSTR lpszAlias)
{
CString joined_table = GetJoinedTable();
int nStart1, nCount1;
int nIndex = SqlString_JoinedTableIndex(joined_table, lpszAlias);
SqlString_JoinedTableItem(joined_table, nIndex, nStart1, nCount1);
CString table_item = joined_table.Mid(nStart1, nCount1);
int nStart2, nCount2;
SqlString_JoinedTableName(table_item, nStart2, nCount2);
return table_item.Mid(nStart2, nCount2);
}
int CSqlString::GetJoinedTableIndex(LPCTSTR lpszAlias)
{
CString joined_table = GetJoinedTable();
CString strAlias(lpszAlias);
SqlString_Alias(strAlias);
return SqlString_JoinedTableIndex(joined_table, strAlias);
}
void CSqlString::SetJoinedTableAlias(int nIndex, LPCTSTR lpszAlias)
{
int nStart1, nCount1;
SqlString_JoinedTable(*this, nStart1, nCount1);
CString joined_table = Mid(nStart1, nCount1);
int nStart2, nCount2;
if (!SqlString_JoinedTableItem(joined_table, nIndex, nStart2, nCount2))
return;
int nStart3, nCount3;
CString table_item = joined_table.Mid(nStart2, nCount2);
SqlString_JoinedTableAlias(table_item, nStart3, nCount3);
// 格式化Alias
CString strAlias(lpszAlias);
SqlString_Alias(strAlias);
if (nCount2 == 0)
SqlString_Insert(table_item, nStart3, strAlias);
else
SqlString_Stuff(table_item, nStart3, nCount3, strAlias);
SqlString_Stuff(joined_table, nStart2, nCount2, table_item);
SqlString_Stuff(*this, nStart1, nCount1, joined_table);
}
void CSqlString::SetJoinedTableName(int nIndex, LPCTSTR lpszName)
{
int nStart1, nCount1;
SqlString_JoinedTable(*this, nStart1, nCount1);
CString joined_table = Mid(nStart1, nCount1);
int nStart2, nCount2;
if (!SqlString_JoinedTableItem(joined_table, nIndex, nStart2, nCount2))
return;
int nStart3, nCount3;
CString table_item = joined_table.Mid(nStart2, nCount2);
SqlString_JoinedTableName(table_item, nStart3, nCount3);
SqlString_Stuff(table_item, nStart3, nCount3, lpszName);
SqlString_Stuff(joined_table, nStart2, nCount2, table_item);
SqlString_Stuff(*this, nStart1, nCount1, joined_table);
}
void CSqlString::SetJoinedTableName(LPCTSTR lpszAlias, LPCTSTR lpszName)
{
int nStart1, nCount1;
SqlString_JoinedTable(*this, nStart1, nCount1);
CString joined_table = Mid(nStart1, nCount1);
int nStart2, nCount2;
CString strAlias(lpszAlias);
SqlString_Alias(strAlias);
int nIndex = SqlString_JoinedTableIndex(joined_table, strAlias);
if (!SqlString_JoinedTableItem(joined_table, nIndex, nStart2, nCount2))
return;
int nStart3, nCount3;
CString table_item = joined_table.Mid(nStart2, nCount2);
SqlString_JoinedTableName(table_item, nStart3, nCount3);
SqlString_Stuff(table_item, nStart3, nCount3, lpszName);
SqlString_Stuff(joined_table, nStart2, nCount2, table_item);
SqlString_Stuff(*this, nStart1, nCount1, joined_table);
}
int CSqlString::InsertJoinedTable(int nIndex, LPCTSTR lpszName,
LPCTSTR lpszJoinType, LPCTSTR lpszJoinCondition)
{
int nStart1, nCount1;
SqlString_JoinedTable(*this, nStart1, nCount1);
CString joined_table = Mid(nStart1, nCount1);
if (nIndex == -1)
nIndex = SqlString_JoinedTableCount(joined_table);
int nStart2, nCount2;
if (!SqlString_JoinedTableItem(joined_table, nIndex, nStart2, nCount2))
nIndex = SqlString_JoinedTableCount(joined_table);
CString strItem;
strItem.Format("%s %s on %s", lpszJoinType, lpszName, lpszJoinCondition);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -