C# 代码解析:根据参数查询数据库并返回结果集
该代码定义了一个函数 getItemNumType,该函数有三个参数,分别为 valid、itemName 和 maxCount,返回值为 ArrayList 类型。该函数的作用是根据传入的参数从数据库中查询符合条件的数据,并返回一个 ArrayList 类型的结果。
首先,函数定义了一个字符串变量 sql,该变量包含了一个 SQL 语句,用于查询数据库中的数据。该 SQL 语句查询了表 fin_com_undruginfo 中的五个字段,并且使用了子查询来获取 FEE_CHECK_GROUP 字段对应的名称。具体的 SQL 语句含义为:查询表 fin_com_undruginfo 中的 item_code、item_name、num_type、num_times 和 FEE_CHECK_GROUP 字段,同时查询 com_dictionary 表中 type 为 'FeeCheckGroup' 且 code 等于 t.FEE_CHECK_GROUP 的记录的 name 字段,并将其作为结果集的一个字段。
var sql = @' t.item_code,t.item_name,t.num_type,t.num_times ,t.FEE_CHECK_GROUP,
(select a.name from com_dictionary a where a.type = 'FeeCheckGroup' and a.code = t.FEE_CHECK_GROUP)
from fin_com_undruginfo T ';
接下来,代码使用了一个布尔类型的变量 hasWhere 来标记是否已经添加了查询条件。如果 valid 等于 0 或 1,则需要增加查询条件,判断 valid_state 字段是否等于 valid 的值。如果 hasWhere 为 false,则需要在 sql 语句中添加 where 关键字以及查询条件;如果 hasWhere 为 true,则需要在 sql 语句中添加 and 关键字以及查询条件。最后,将 hasWhere 设置为 true,表示已经添加了查询条件。
if (new string[]{@'0', @'1'}.Contains(valid))
{
//需要增加判断条件
sql += string.Format(@' where t.valid_state = '{0}' ', valid);
hasWhere = true;
}
接下来,代码判断 itemName 是否为空。如果 itemName 不为空,则需要添加查询条件,判断 item_name 字段是否包含 itemName。根据 hasWhere 的值,添加 where 或 and 关键字以及查询条件。最后,将 hasWhere 设置为 true,表示已经添加了查询条件。
if (!string.IsNullOrEmpty(itemName))
{
if (hasWhere)
{
sql += string.Format(@' and t.item_name like '%{0}%' ', itemName);
}
else
{
sql += string.Format(@' where t.item_name like '%{0}%' ', itemName);
}
hasWhere = true;
}
接着,代码判断 maxCount 是否大于 0。如果 maxCount 大于 0,则需要限制返回的数据条数,将原来的 sql 语句修改为只返回前 maxCount 条记录,并且按照 item_code 字段升序排序。如果 maxCount 小于等于 0,则不需要限制返回的数据条数,直接返回原来的 sql 语句。
if (maxCount > 0)
{
//限制返回条数
sql = @' select top ' + maxCount.ToString() + sql + @' order by t.item_code asc';
}
else
{
sql = @' select ' + sql;
}
最后,调用函数 GetItemNumTypeFromReader,传入 sql 语句作为参数,从数据库中获取符合条件的数据,并将结果以 ArrayList 类型返回。
return GetItemNumTypeFromReader(sql);
该代码演示了如何使用 C# 代码从数据库中查询数据并返回结果集。代码中使用了字符串格式化和条件语句来构建最终的 SQL 语句,并根据参数的不同来控制查询条件和返回的数据条数。这种代码结构清晰,易于理解和维护,并能够满足不同的查询需求。
原文地址: https://www.cveoy.top/t/topic/m8Ub 著作权归作者所有。请勿转载和采集!