C# C搜索按钮代码问题。

C# C搜索按钮代码问题。,c#,sql-server,C#,Sql Server,我使用VS和C来创建一个搜索函数。此功能将使用一个文本框,以便用户可以输入索赔编号和一个搜索按钮,以便在另一组文本框中显示来自该索赔的数据 问题是,在我输入索赔编号并单击按钮后,不会显示任何数据,运行时也不会出现错误 我在这里遵循了其他问题的一些建议,但到目前为止,我还无法让它发挥作用,以下是我的代码: SqlConnection con = new SqlConnection("Integrated Security=SSPI;Persist Security Info=Fal

我使用VS和C来创建一个搜索函数。此功能将使用一个文本框,以便用户可以输入索赔编号和一个搜索按钮,以便在另一组文本框中显示来自该索赔的数据

问题是,在我输入索赔编号并单击按钮后,不会显示任何数据,运行时也不会出现错误

我在这里遵循了其他问题的一些建议,但到目前为止,我还无法让它发挥作用,以下是我的代码:

        SqlConnection con = new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SISProductionDB;Data Source=Servername");
        DataTable dt = new DataTable();
        DataSet ds = new DataSet();
        SqlDataReader myReader = null;

        con.Open();          

        SqlCommand myCommand = new SqlCommand("SELECT * FROM Claim WHERE ClaimNumber = '%@ClaimNumber%'", con);
        myCommand.Parameters.AddWithValue("@ClaimNumber", NumQuerellaTxt.Text);
        SqlDataAdapter SDA = new SqlDataAdapter(myCommand.CommandText, con);

        myReader = myCommand.ExecuteReader();
        myReader.Read();

        while (myReader.Read()) 
        {
            ClaseQuerellaTxt.Text = (myReader["ClaimID"].ToString());
            TipoQuerellaTxt.Text = (myReader["ClaimTypeID"].ToString());
            FuenteQuerellaTxt.Text = (myReader["ClaimTypeID"].ToString());
            EstatusQuerellaTxt.Text = (myReader["ClaimTypeID"].ToString());
            OficialAtiendeTxt.Text = (myReader["ClaimTypeID"].ToString());
            OficialInvestigaTxt.Text = (myReader["ClaimTypeID"].ToString());
            QuerellaTxt.Text = (myReader["ClaimTypeID"].ToString());
            FechaQuerellaTxt.Text = (myReader["ClaimTypeID"].ToString());
            FechaIncidenteTxt.Text = (myReader["ClaimTypeID"].ToString());
            HoraIncidenteTxt.Text = (myReader["ClaimTypeID"].ToString());
            AbogadoAtiendeTxt.Text = (myReader["ClaimTypeID"].ToString());
            FechaVistaTxt.Text = (myReader["ClaimTypeID"].ToString());
            HoraVistaTxt.Text = (myReader["ClaimTypeID"].ToString());
            SalaVistaTxt.Text = (myReader["ClaimTypeID"].ToString());
        }

        con.Close();

在阅读下面的解决方案之前,您可能应该尝试使用调试器并自己查找问题。调试是您需要培养的一项基本技能。你应该能找到像这样的bug

回答:您正在跳过第一行:

myReader.Read();

while (myReader.Read()) 

在阅读下面的解决方案之前,您可能应该尝试使用调试器并自己查找问题。调试是您需要培养的一项基本技能。你应该能找到像这样的bug

回答:您正在跳过第一行:

myReader.Read();

while (myReader.Read()) 

使用存储过程而不是在代码中设置查询是一种很好的做法。通常情况下,select*只能用于特殊查询,如果有人更改表结构,您的查询将中断。最好明确地命名您想要的列。我还建议您在连接和数据读取器中使用using。如果此处出现错误,您的连接可能不会被处理,最好使用存储过程,而不是在代码中设置查询。通常,select*只能用于特殊查询,如果有人更改表结构,您的查询将中断。最好明确地命名您想要的列。我还建议您在连接和数据读取器中使用using。如果此处出现错误,您的连接可能无法处理有关错误的提示,我设法修复了该错误,但不幸的是,它没有解决我的问题,程序仍然不会在文本框中显示任何数据,还有其他建议吗?我将非常感激。使用调试器找出读取了多少行。然后您会发现数字为零。=>你的查询一定有问题。在SSMS中运行查询。您将看到这里也没有返回任何行。现在你知道你的C应用程序没有错了。问题就在这里。要解决的问题要简单得多。感谢关于这个bug的提示,我成功地解决了这个问题,不幸的是它没有解决我的问题,程序仍然没有在文本框中显示任何数据,还有什么建议吗?我将非常感激。使用调试器找出读取了多少行。然后您会发现数字为零。=>你的查询一定有问题。在SSMS中运行查询。您将看到这里也没有返回任何行。现在你知道你的C应用程序没有错了。问题就在这里。要解决的问题要简单得多。