【问题标题】:Showing Database Search results in Datagridview在 Datagridview 中显示数据库搜索结果
【发布时间】:2015-08-12 19:26:31
【问题描述】:

我在我的 Windows 窗体应用程序 c# 中使用 Visual Studio 2013 和 SQL Server 2012 作为数据库。

我想在DataGridView 中显示我的查询搜索结果:

public void customerSearch(int custID, DataGridView dataGridView)
{
        try
        {
            SqlConnection connection = new SqlConnection(@"Connection String");
            connection.Open();

            SqlCommand searchQuery = new SqlCommand("select * from [Customer] where custId = @custID", connection);
            searchQuery.Parameters.AddWithValue("@custId", custID);
            //searchQuery.ExecuteNonQuery();

            using (SqlDataReader reader = searchQuery.ExecuteReader())
            {
                while (reader.Read())
                {
                    dataGridView.DataBindings.ToString();
                }
            }
        }
        catch (SqlException Exception)
        {
            MessageBox.Show(Exception.ToString());
        }
        finally
        {
            connection.Close();
        }
    }
}

我在connection.Close(); 得到了NullReferenceException 任何帮助将不胜感激。

【问题讨论】:

  • 或任何其他用于此目的的方法?
  • 实际上我在发布之前删除了连接字符串。连接字符串没有问题,因为我正确地给了它@KhairulIslam
  • 您应该将连接放在 app.config 中,而不是在表单中进行编码。
  • 您可能还想看看这篇文章。 blogs.msmvps.com/jcoehoorn/blog/2014/05/12/…
  • 要实际查看您的问题,我很惊讶这会编译。您在尝试中定义了连接,但在最后您尝试引用它。它超出了范围。您应该将连接包装在 USING 中。

标签: c# sql-server winforms visual-studio-2013 datagridview


【解决方案1】:

当您将连接置于 USING 中时,它会在块退出时自动关闭并释放您的连接。

public void customerSearch(int custID, DataGridView dataGridView)
        {
            using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString))
            {
                try
                {

                    connection.Open();

                    SqlCommand searchQuery = new SqlCommand("select * from [Customer] where custId = @custID", connection);
                    searchQuery.Parameters.Add("@custId", SqlDbType.Int).Value = custID;
                    //searchQuery.ExecuteNonQuery();

                    using (SqlDataReader reader = searchQuery.ExecuteReader())
                    {
                        DataTable dt = new DataTable();
                        dt.Load(reader);
                        dataGridView.AutoGenerateColumns = true;
                        dataGridView.DataSource = dt;
                        dataGridView.Refresh();
                    }
                }
                catch (SqlException Exception)
                {
                    MessageBox.Show(Exception.ToString());
                }
            }
        }

--编辑--

您不能将 DataGridView 绑定到 DataReader。我编辑了上面的代码来演示一种方法来做到这一点。我只是从您的阅读器创建一个 DataTable 并将网格绑定到 DataTable。

【讨论】:

  • 老实说,不确定您使用 DataBindings.ToString 做了什么。您是否尝试将网格绑定到阅读器?
  • 是的一种。实际上我想在“DataGridView”中显示我的查询结果。
  • 好的。我现在明白你想要什么了。我编辑了代码以演示一种方法。
  • 完美解释,真正解决了我的问题...谢谢
猜你喜欢
  • 2013-02-23
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
相关资源
最近更新 更多