`DataTable`不包含';填充&x27;-c#
我不明白为什么在阅读了有关`DataTable`不包含';填充&x27;-c#,c#,sql,C#,Sql,我不明白为什么在阅读了有关.Fill()的文档后会出现错误。我是否遗漏了导致返回错误的内容 protected void FillData() { using (SqlConnection connection = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB;AttachDbFilename= C:\Users\home\Documents\C# Programs\shop\Database.m
.Fill()
的文档后会出现错误。我是否遗漏了导致返回错误的内容
protected void FillData()
{
using (SqlConnection connection = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB;AttachDbFilename= C:\Users\home\Documents\C# Programs\shop\Database.mdf ;Integrated Security = True"))
{
connection.Open();
using (SqlDataAdapter dataAdapter = new SqlDataAdapter("select * from Employee", connection))
{
DataTable table = new DataTable();
table.Fill(table);
employeeDataGridView.DataSource = table;
}
}
}
问题出在这行代码中
table.Fill(table);
您不能使用表格来填充您的表格。正确的语法应该是
dataAdapter.Fill(table)
您不能以这种方式填充DataTable,您需要填充DataAdapter,使用数据集,然后将DataGridView设置为使用该数据集
using (SqlDataAdapter dataAdapter = new SqlDataAdapter("select * from Employee", connection))
{
var ds = new DataSet();
dataAdapter.Fill(ds);
employeeDataGridView.DataSource = ds.Tables[0];
}
最简单的编码方法是:
protected void FillData()
{
using (SqlDataAdapter dataAdapter = new SqlDataAdapter("select * from Employee", @"Data Source = (LocalDB)\MSSQLLocalDB;AttachDbFilename= C:\Users\home\Documents\C# Programs\shop\Database.mdf ;Integrated Security=True"))
{
DataTable table = new DataTable();
dataAdapter.Fill(table);
employeeDataGridView.DataSource = table;
}
}
如果将连接字符串放在某个静态“全局”变量中,它会变得更整洁
注意事项:
- 使用带有两个字符串的dataadapter构造函数-它将为您创建连接和命令
- 您不需要打开适配器的连接,它知道如何连接
- 这意味着您可以只使用一个
- 如果您的sql需要参数,请使用as
dataAdapter将它们放入数据库。选择Command.Paramaters.Add…
- 您可以将其转换为一个方法,该方法接受任何sql字符串和参数集合,并返回一个datatable
- 考虑在sql中添加WHERE子句;用户可能不喜欢看到一个拥有20000名员工的网格,因为它使编辑少数员工变得更加困难
另一种更好的方法是使用简洁、强类型的POCO您不需要为此使用数据集;数据适配器可以直接填充数据表
SqlDataAdapter
具有.fill
方法。table.fill(table)代码>似乎明显不正确。哇,我没听清楚。非常感谢。谢谢你和我分享这个;非常感谢!