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

📄 datalink.cpp

📁 数据访问的定义类
💻 CPP
📖 第 1 页 / 共 5 页
字号:
{
	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 + -