我正在尝试显示vb程序的访问数据库中列的总和。我编写了以下代码,但它没有做任何事情 - 程序运行时文本框仍然是默认值。
Dim command As OleDbCommand
Dim data_reader As OleDbDataReader
connection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=H:\Computing\Year 13\Computing Project Course-work\Database41.accdb")
command = New OleDbCommand("SELECT SUM(Distance) As Int32 FROM [Table3];", Conn)
dr = command.ExecuteReader
While dr.Read
TextBox7.Text = dr.GetValue(4)
End While
答案 0 :(得分:0)
您只能从该命令返回一列
您不能使用try从索引4处的列读取值,它根本不存在。你应该为这次尝试获得一个例外。如果你没有看到异常只意味着你有一个空的try / catch块来隐藏你的错误。您应该使用dr.GetValue(0)
但是在查询中使用标量函数(SUM),那么最好使用ExecuteScalar
Using connection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=H:\Computing\Year 13\Computing Project Course-work\Database41.accdb")
Using command = New OleDbCommand("SELECT SUM(Distance) As Total FROM [Table3];", Conn)
Dim total = Convert.ToInt32(command.ExecuteScalar)
TextBox7.Text = total.ToString
End Using
End Using
(请注意,在完成使用它们之后,应该处理像连接,命令和读取器这样的一次性对象。使用块可以确保这一点。