gpt4 book ai didi

vb.net - 从 vb.net 中的数据表打印出行的更好方法

转载 作者:行者123 更新时间:2023-12-04 06:03:11 24 4
gpt4 key购买 nike

我是 vb.net 的新手,我正在尝试查询数据库并将行中的记录打印到控制台窗口。我让它工作了,但我觉得有一种更简洁的方法来做到这一点。我确定是错误的一件事是我必须将数据集转换为数据表才能检索值。那是正确的吗?你能看看下面的代码(尤其是 for 循环),让我知道我可以改进什么吗?

谢谢!

Module Module1

Sub Main()

Dim constring As String = "Data Source=C:\Users\test\Desktop\MyDatabase1.sdf"
Dim conn As New SqlCeConnection(constring)
Dim cmd As New SqlCeCommand("SELECT * FROM ACCOUNT")
Dim adapter As New SqlCeDataAdapter
Dim ds As New DataSet()

Try
conn.Open()
cmd.Connection = conn
adapter.SelectCommand = cmd
adapter.Fill(ds, "testds")
cmd.Dispose()
adapter.Dispose()
conn.Close()

Dim dt As DataTable = ds.Tables.Item("testds")
Dim row As DataRow
Dim count As Integer = dt.Columns.Count()

For Each row In dt.Rows
Dim i As Integer = 0
While i <= count - 1
Console.Write(row(i))
i += 1
End While
Console.WriteLine(Environment.NewLine())
Next

Catch ex As Exception
Console.WriteLine("There was an error")
Console.WriteLine(ex)
End Try

Console.ReadLine()

End Sub

End Module

最佳答案

出于以下几个原因,我将如何重写它:

1) 您应该始终使用 Using一次性物品的声明,以确保它们被正确清理。您对 dispose 命令有一个良好的开端,但这种方式更安全。

2)使用ExecuteReader效率更高而不是将所有内容加载到数据集中。

3) 你的 try/catch 语句应该包括对象创建和执行。

最后,针对您关于数据集和数据表的问题,该代码是绝对正确的:数据集由零个或多个数据表组成,因此您只是从数据集中提取现有数据表。

    Try
Dim constring As String = "Data Source=C:\Users\test\Desktop\MyDatabase1.sdf"

Using conn As New SqlCeConnection(constring)
conn.Open()
Using cmd As New SqlCeCommand("SELECT * FROM ACCOUNT", conn)
Dim reader As SqlCeDataReader

reader = cmd.ExecuteReader()
Do While reader.Read
For i As Integer = 0 To reader.FieldCount - 1
Console.Write(reader.GetString(i))
Next
Console.WriteLine(Environment.NewLine())
Loop
End Using
End Using
Catch ex As Exception
Console.WriteLine("There was an error")
Console.WriteLine(ex)
End Try

Console.ReadLine()
End Sub

最后一点:由于您只是打印到控制台,所以并不重要,但是每当您处理大量字符串时,尤其是要连接的字符串时,您应该始终考虑使用 System.Text.StringBuilder .

这是使用 stringbuilder 打印到控制台的循环重写示例(在内存中构建字符串,然后将其转储到控制台;我还添加了字段名称以进行良好测量):
 Dim sbOutput As New System.Text.StringBuilder(500)
For i As Integer = 0 To reader.FieldCount - 1
If sbOutput.Length <> 0 Then
sbOutput.Append("; ")
End If
sbOutput.Append(reader.GetName(i)).Append("=").Append(reader.GetString(i))
Next
sbOutput.AppendLine()
Console.Write(sbOutput.ToString)

关于vb.net - 从 vb.net 中的数据表打印出行的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8689963/

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