【问题标题】:TableAdapter Preview and Fill/GetTableAdapter 预览和填充/获取
【发布时间】:2018-06-20 17:16:48
【问题描述】:

所以我有一个带有表适配器的数据集,用于选择存储过程。如果我预览数据、输入参数值等,我会得到我期望的结果。在代码中,当尝试将数据放入数据表时,我没有得到任何结果,并且与预览数据时的结果不同。

Dim dt As New DataTable
Dim ta As New BSDataSetTableAdapters.getBenchLogsTableAdapter
dt = ta.GetData(programid_, Nothing, Nothing, Nothing, Nothing, Nothing)

对于可能发生的事情有什么想法或想法吗?

【问题讨论】:

  • 发布你的数据检索代码,你可以直接把你的数据放到数据表中。除非您将数据集用于其他目的。
  • 不确定我是否理解。你的意思是使用sql命令而不是tableadapter?
  • 好的,我想通了。这是因为一些参数是整数,将它们设置为空实际上是将它们设置为 0,这会破坏存储过程 bc 检查它们是否为空而不是 0。不知道如何解决这个问题
  • 试试 DBNull.Value
  • 首先,您需要考虑何时使用New,何时不使用。您的代码的第一行创建了一个新的DataTable,然后第三行将其丢弃并用GetData 方法创建的DataTable 替换它。不要使用 New 关键字,除非你真的想要一个新对象。

标签: vb.net tableadapter


【解决方案1】:

在设计器中打开您的DataSet,在表适配器中选择查询,打开“属性”窗口,选择Parameters 属性并单击浏览(...)按钮。检查每个参数的 AllowDBNull 属性。我希望您会发现它们被设置为False。这意味着您的 GetData 方法的参数将是 Integer 并且如您所见,Nothing 将变为 0。

把这些属性改成True,你会发现参数会变成Integer?类型,即Nullable(Of Integer),所以传递Nothing实际上是没有值的,在下面会被转换成DBNull.Value引擎盖。

【讨论】:

    猜你喜欢
    • 2014-10-24
    • 2011-11-19
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多