首页 > 解决方案 > DataGridView 不显示表 C#

问题描述

我的数据网格视图未显示数据。我希望它在运行时显示整个表和搜索特定行的搜索选项。

SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\DELL\source\repos\phoneBookwin\phoneBookwin\Database1.mdf;Integrated Security=True");
con.Open();

using (SqlCommand com = new SqlCommand("select * from Contacts"))
{
    using (SqlDataAdapter db = new SqlDataAdapter("select * from Contacts", con))
    {
        DataTable View = new DataTable();
        db.Fill(View);
    }
}

这是用于搜索特定联系人

private void search_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\DELL\source\repos\phoneBookwin\phoneBookwin\Database1.mdf;Integrated Security=True");
    con.Open();
    SqlDataAdapter cmd = new SqlDataAdapter("Select * from Contacts where Name = '"+searchBox.Text+"'",con);
    DataTable View = new DataTable();
    cmd.Fill(View);
    con.Close();
}

无论我是否单击搜索按钮,数据网格视图都没有显示任何内容。

标签: c#sql-server

解决方案


您的代码永远不会将您填写的结果 DataTable 分配给 datagridview;它只是填满它然后把它扔掉。您需要在拨打电话 someDataGridView.DataSource = View后拨打电话Fill

如果执行此操作后 datagridview 仍为空白,则很可能没有数据下载到数据表中。检查您已连接到正确的数据库并且该表有数据。如果您没有看到您期望的列,请检查 datagridview 的 AutoGenerateColumns 设置是否为 true

其他点,请..

  • ..停止以您当前的方式编写 SQL,将文本框中的值连接起来 - 它不仅会让人搜索 O'Connor 这个名字,而且还会使您面临最常见的黑客攻击形式的风险数据库软件。阅读http://Bobby-tables.com - 你的代码应该更像:
    using(var da = new SqlAdapter("SELECT * FROM t WHERE c LIKE @p") {
      da.SelectCommand.Parameters.Add("@p", SqlDbType.VarChar, 4000).Value = textbox.Text;
      //fill etc
    }
  • ..让自己熟悉 C# 命名约定。View应该调用view它,因为它是本地成员,而不是可公开访问的类级别属性

推荐阅读