如果在数据库中找不到记录我想发布未找到但似乎没有工作

时间:2018-05-23 11:06:10

标签: c# botframework

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");
    }
}

如果数据库中不存在记录,我希望机器人显示未找到的记录,但它似乎不起作用,而是显示任何内容。

2 个答案:

答案 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()表示数据集中有实际记录。你应该把你的代码放在外面。