这是一个简单的 Visual Basic Windows 窗体应用程序。数据库是本地 sqlserver 数据库。
任务是遍历一个有 4 列的表:ID、dateTime、onOff、param。
ID 对于特定设备是唯一的,dateTime 是事件发生时间的时间戳,onOff 将是字符串“on”或“off”,param 是整数,不是唯一的。
对于每个 ID,假设第一行是 ID 23,它是“on”,param 是 6,我需要为 ID 23 和 param 6 找到匹配的“off”行,并计算 dateTime 的差异以确定一个ID 开启或关闭的持续时间。
这需要对表中的所有 ID 进行,大约 1000 万行。每个 ID 有多个开/关对,关键是找到与 dateTime 最接近的一对。
我已经查看并尝试了几种方法都无济于事,从数据表和数据集到将所有内容推送到 csv 并一次以块的形式读取。解决此问题的最佳方法是什么,您的步骤是什么?
在下面的代码中,一旦用户选择了开始和结束日期,正确的数据就会放在数据表中。现在我需要执行上述匹配行的任务。
Dim sConnectionString As String
sConnectionString = "Data Source=[servername];Initial Catalog=[tabelname];Integrated Security=True"
Dim objConn As New SqlConnection(sConnectionString)
objConn.Open()
Dim ID As String
ID = TextBox1.Text
Dim startDate As Date
startDate = DateTimePicker1.Value.Date
Dim endDate As Date
endDate = DateTimePicker2.Value.Date
Dim strSql As String = "SELECT ID, dateTime, onOff, param FROM signalRaw WHERE CAST (dateTime as DATE) between '" & startDate & "' AND '" & endDate & "'"
Dim dasignalRawComma As New SqlDataAdapter(strSql, objConn)
Dim dtb As New DataTable
dasignalRawComma.Fill(dtb)