[英]populate a sql query into datagridview on vb.net
我想在 vb.net 上的 datagridview 上填充 sql 查询 我尝试了在 inte.net 上找到的这段代码,但出现错误
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 用于销售。 以及我在 sql 女士上所做的查询,并计算出仍然可用的库存提前致谢
那里有两个明显的问题,据我们所知,可能还有更多。 首先,您从未实际创建连接 object。您所做的只是声明一个变量,然后尝试设置您从未创建的 object 的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
行。 最好将 arguments 传递给构造函数,而不是调用无参数构造函数,然后立即设置属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.