将 sql 查询填充到 vb.net 上的 datagridview 中
Posted
技术标签:
【中文标题】将 sql 查询填充到 vb.net 上的 datagridview 中【英文标题】:populate a sql query into datagridview on vb.net 【发布时间】:2021-01-14 05:32:36 【问题描述】:我想在 vb.net 上的 datagridview 上填充 sql 查询 我尝试了我在互联网上找到的这段代码 但我得到一个错误
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
DataGridView2.Visible = False
Dim Dataconnection As SqlConnection
Dataconnection.ConnectionString = "server=DESKTOP-514KV5J\SQLEXPRESS;database=A;trusted_connection=True"
Dim cmd As New SqlCommand
cmd.Connection = Dataconnection
cmd.CommandText = "select SA,Product,sum(quantity) quantity from(select SA,Product,quantity from tbpurchase union all select SA,Product,-quantity from tbsold)dt group by SA,Product"
Dim rdr As SqlDataAdapter = cmd.ExecuteReader
Dim dt As New DataTable
dt.Load(rdr)
rdr.close()
DataGridView2.DataSource = dt
End Sub
我只想查看 datagridview2 上的查询,而没有任何表上的任何存储。 如果您有解决方案,我该怎么做。 因为我有 2 张桌子。 1 用于采购。 1 用于销售。 以及我在 ms sql 上所做的查询以及计算库存仍然可用 提前致谢
【问题讨论】:
请添加错误。这将帮助我们帮助您! 实际上是 next question 的副本 - 其中包含实际的错误消息。 【参考方案1】:那里有两个明显的问题,据我们所知,可能还有更多。首先,您从未真正创建过连接对象。您所做的只是声明一个变量,然后尝试设置您从未创建的对象的ConnectionString
。这是绝对的编程基础,与数据访问无关,所以我们不应该解释,尤其是因为您稍后在代码中创建对象,所以显然知道如何。
其次,您甚至没有尝试打开不是您创建的连接。如果您在数据适配器上调用Fill
,那么它将自动打开和关闭连接,但如果您使用数据读取器,则必须自己完成。
考虑到这两个问题并稍微清理一下代码,我们得出以下结论:
Using connection As New SqlConnection("server=DESKTOP-514KV5J\SQLEXPRESS;database=A;trusted_connection=True"),
command As New SqlCommand("SELECT SA, Product, SUM(Quantity) Quantity FROM (SELECT SA, Product, Quantity FROM tbpurchase UNION ALL SELECT SA, Product, -Quantity FROM tbsold) dt GROUP BY SA, Product", connection)
connection.Open()
Dim table As New DataTable
Using reader = command.ExecuteReader()
table.Load(reader)
End Using
DataGridView2.DataSource = table
End Using
对于支持它的对象,如果您只想在当时和那里使用它们,则应始终使用Using
块创建它们,因为它们将隐式地放置在End Using
行。最好将参数传递给构造函数,而不是调用无参数构造函数,然后立即设置属性。
【讨论】:
当我使用此代码时:我收到以下错误:Invalid column name 'SA' 是您将列名放在那里的人,而不是我。我告诉你你的 VB 代码有什么问题。显然,您需要在 SQL 和数据库中使用有效的列名。你有一个名为 SA 的列吗?它可能是一个保留字,因为它是内置系统管理员用户的名称。如果是这种情况,那么您需要像 SQL 中的任何其他保留字一样对其进行测试。 我看到您已将其作为单独的问题发布,在这种情况下,此问题已得到回答,您应该接受答案。 感谢编辑数据库后代码工作 如果这个答案已经解决了您的问题,那么请接受它,这样每个人都可以看到您不再需要帮助,而无需打开问题并阅读所有内容。这是为什么您应该在发布之前进行站点游览的示例;以便您了解该网站的运作方式。以上是关于将 sql 查询填充到 vb.net 上的 datagridview 中的主要内容,如果未能解决你的问题,请参考以下文章
链接到 SQL Server 的 Active Directory
SQL Server查询参数用于将数据表复制到另一个表单ListView VB.net