这些 SqlDataAdapter.Fill 和 DataSet.Tables 中的这个参数是啥

Posted

技术标签:

【中文标题】这些 SqlDataAdapter.Fill 和 DataSet.Tables 中的这个参数是啥【英文标题】:what is this parameter in these SqlDataAdapter.Fill and DataSet.Tables这些 SqlDataAdapter.Fill 和 DataSet.Tables 中的这个参数是什么 【发布时间】:2014-09-30 16:31:54 【问题描述】:

我有这部分代码:

Dim SqlCommand_customer As New SqlCommand("selectcustomer", conn.con)
SqlCommand_customer.CommandType = CommandType.StoredProcedure
Dim da_customer As New SqlDataAdapter
Dim SqlDataAdapter_customer As New SqlDataAdapter(SqlCommand_customer)
Dim ds_customer = New DataSet()
SqlDataAdapter_customer.Fill(ds_customer, "customer")
DataGridView_customer.DataSource = ds_customer.Tables("customer")

所以我想知道最后两行中"customer" 代表什么 整个文件中没有任何名为 customer 的内容 而MSDN 声明Fill 中的第二个参数必须是iDataReader 类型:

数据读取器 类型:System.Data.IDataReader IDataReader 的一个实例。

【问题讨论】:

【参考方案1】:

SqlDataAdapter 类派生自DbDataAdapter,它具有Fill 的方法重载,第二个参数是字符串。

此字符串是将分配给为存储您的记录而创建的表的名称,或者,如果您在数据集中已有表,它是一个预先存在的表的名称,该表将使用返回的记录加载/刷新命令。

当然是

中的语法
DataGridView_customer.DataSource = ds_customer.Tables("customer")

是通过名称引用此表的方式(与ds_customer.Tables(0) 相同)

【讨论】:

【参考方案2】:

填充命令的第二个参数是表的名称。

您正在查看错误的参考。您希望 Fill 命令关闭 SQLDataAdapter。

【讨论】:

以上是关于这些 SqlDataAdapter.Fill 和 DataSet.Tables 中的这个参数是啥的主要内容,如果未能解决你的问题,请参考以下文章

SqlDataAdapter#Fill:`SelectCommand.connection` 属性尚未初始化

SqlDataAdapter.Fill - 异步方法

SqlDataAdapter.Fill() 溢出异常

SqlDataAdapter.Fill(DataGridView.DataSource) 复制所有行

SqlClient.SqlDataAdapter.Fill(DataSet) 结果如果不选择查询

SqlDataAdapter.Fill 方法慢