while (reader.Read())
{
var g = reader.FieldCount;
if (g > 0)
{
string a = reader.GetString(1);
string b = reader.GetString(3);
string c = reader.GetString(4);
string d = reader.GetString(5);
await context.PostAsync($" ### Please find below the fleet policy information \n #### Policy number - " +
$"`{a}` \n #### Policy type - `{b}` \n #### Property - `{c}` \n #### Number - `{d}` ");
}
else
{
await context.PostAsync("Record not found");
}
}
如果数据库中不存在记录,我希望机器人显示未找到的记录,但它似乎不起作用,而是显示任何内容。
答案 0 :(得分:0)
您检查属性HasRows
if(reader.HasRows)
{
while (reader.Read())
{
string a = reader.GetString(1);
string b = reader.GetString(3);
string c = reader.GetString(4);
string d = reader.GetString(5);
await context.PostAsync(...........);
}
}
else
{
await context.PostAsync("Record not found");
}
当没有更多记录要读时,实际上读取返回false。在没有任何记录要读取的情况下,该方法立即返回false,并且您永远不会进入具有输出消息的代码的读取循环。当然,FieldCount在这里没有意义,因为它从Read方法计算字段而不是返回的IDataRecord的行。
因此,您的解决方案是在开始循环之前检查HasRows属性,如果返回false则打印您的消息。
答案 1 :(得分:0)
reader.Read()表示数据集中有实际记录。你应该把你的代码放在外面。