这是为我所在的课程进行的预先分配。假设它非常简单并充当热身活动,但我无法使其工作。基本上,代码引入了测试数据库并执行计算。在这种情况下,我试图找到一组棒球运动员中最高的平均击球平均数。VB.Net中的SQL计算不起作用
所以我的最终结果应该是击球平均得分最高的球员的名字,或者如果他们平均得分最高,那么他们的名字应该是少数。
下面是代码:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As DataTable = New DataTable()
Dim connStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Baseball.accdb"
Dim sqlStr As String = "SELECT * FROM Players"
Dim dataAdapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(sqlStr, connStr)
dataAdapter.Fill(dt)
dataAdapter.Dispose()
Dim average, pastAverage, highestAverage As Double
For i As Integer = 0 To dt.Rows.Count - 1
average = CDbl(dt.Rows(i)("hits/atBats"))
If average > pastAverage Then
highestAverage = average
End If
pastAverage = average
Next
For i As Integer = 0 To dt.Rows.Count - 1
If dt.Rows(i)("hits/atBats") = highestAverage Then
lstBoxHighest.Items.Add(dt.Rows(i)("name"))
End If
Next
End Sub
End Class
调试将不会晃过的 “平均= Cdbl(dt.Rows(ⅰ)(” 命中/ atBats “))” 中的第一个for循环线。我不能在循环中进行这样的计算吗?我相信列标题(命中和atBats是正确的)
数据库看起来像这样的情况下,你想知道:
name Team atBats hits Derek Jeter New York Yankees 511 158 Joe Mauer Minnesota Twins 545 174 etc...
谢谢!
命中是列名,atBats是列名。我试图通过atBats除以命中来找到击球平均数。所以它应该是一个计算。我应该尝试通过写入SELECT名创建一个新的列,命中/ atBats作为击球平均来自玩家? – user3029567
我加了什么数据库看起来像所以你可以看到atBats和命中列 – user3029567