gpt4 book ai didi

vb.net - 避免在每列上检查 DataRow.IsDBNull 吗?

转载 作者:行者123 更新时间:2023-12-01 08:34:10 29 4
gpt4 key购买 nike

我的代码比自动设置时长 2 倍 IsDBNull""或者简单地将其翻转而不会出错。

这是我的代码:

Dim conn As New SqlConnection
conn.ConnectionString = Module1.DBConn2
Dim sqlCommand = New SqlCommand("SELECT * FROM table", conn)
conn.Open()
Dim sqlDataset As DataSet = New DataSet()
Dim sqlDataAdapter As SqlDataAdapter = New SqlDataAdapter(sqlCommand)
sqlDataAdapter.Fill(sqlDataset)
conn.Close()

For Each rs As DataRow In sqlDataset.Tables(0).Rows
If Not IsDBNull(rs("column")) Then
Response.Write(rs("column"))
Else
Response.Write("")
End If

Response.Write("some stuff to write")

If Not IsDBNull(rs("column2")) Then
Response.Write(rs("column2"))
Else
Response.Write("")
End If
Next

在那种情况下,我只想输入 Response.Write(rs("column"))而不是 If声明,如果 column IsDBNull然后输出一个空字符串。

我怎样才能做到这一点?

提前谢谢了!

最佳答案

您可以简单地使用 String.Join 并通过 row.ItemArray :

For Each row As DataRow In sqlDataset.Tables(0).Rows
Response.Write(String.Join("", row.ItemArray))
Next

DBNull.ToString 起有效返回一个空字符串。

如果你想处理每一列,你可以使用强类型 DataRowExtensions.Field 支持可空值并返回 null 的方法/ Nothing为字符串。然后你可以使用 null-coalescing operator (在 C# 中为 ??,在 VB 中为 If)。
Dim rowInfo = String.Format("{0}{1}{2}",
If(row.Field(Of String)("Column1"), ""),
If(row.Field(Of String)("Column2"), ""),
If(row.Field(Of String)("Column3"), ""))

但是,请注意 String.Format将转换 null/ Nothing""无论如何,所以 If是多余的,仅供引用。

MSDN :

If the object specified by index is a null reference (Nothing in Visual Basic), then the format item is replaced by the empty string ("").

关于vb.net - 避免在每列上检查 DataRow.IsDBNull 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14401264/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com