C# 将程序的输出与sqlite数据库进行比较

C# 将程序的输出与sqlite数据库进行比较,c#,C#,我将dataVal输出与sqlite数据库进行比较,如下代码所示。 例如:假设dataVal的输出为Kelly。当我运行程序时,在第一个循环中,字符串z存储值“K”,然后仅在第二个循环后存储“Kelly”。有人能详细说明一下这里发生了什么,以及如何在第一次循环后将z的值设为“Kelly”吗 dataVal = string.Join("", dataResult.ToArray()); Aryabase databaseObject = new Aryabase(); if

我将dataVal输出与sqlite数据库进行比较,如下代码所示。 例如:假设dataVal的输出为Kelly。当我运行程序时,在第一个循环中,字符串z存储值“K”,然后仅在第二个循环后存储“Kelly”。有人能详细说明一下这里发生了什么,以及如何在第一次循环后将z的值设为“Kelly”吗

dataVal = string.Join("", dataResult.ToArray());
Aryabase databaseObject = new Aryabase();

if (dataVal.StartsWith('k'))
{
    using (SQLiteConnection con = new SQLiteConnection(databaseObject.myConnection))
    {
        SQLiteCommand cmd = new SQLiteCommand("select * from k where Data like 'k%'", con); 
        con.Open();
        var rdr = cmd.ExecuteReader();
        while (rdr.Read())
        {
            string z = Convert.ToString(rdr["Data"]);
            if (dataVal == z)
            {
                Console.WriteLine(Convert.ToString(rdr["Data"]));
            }
          
        }
    }
}

这很简单。第一个程序检查dataVal是否以字母k开头。如果是,则返回k表中数据字段以字母k开头的所有记录。最后,它检查哪个记录的数据值等于dataVal并将其打印到输出。

第二个循环在哪里?z在while内部声明,因此一旦将loopAdd变量留在方法外部,它就消失了,然后在
if(dataVal==z)
内部执行
yourVariable=z之后使用变量