我正在使用VB.Net从数据库中的表中读取字段。计时器计划每5秒读取该字段的值。我正在使用数据适配器来获取表中的值,该表中第一行的第一个元素是我的数据。 我观察到的是,如果我在for循环中读取数据,它可以正常工作。外部在该字段值中所做的更改将反映在用于存储该数据的变量中。但是,如果我直接读取第一行的索引0元素,则变量不会反映外部对数据库所做的更改。
'----declaration---
Dim query2 As String = "SELECT Data2 FROM DSSControl WHERE StationID LIKE 1"
Dim MDBConnString_ As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\DrumScanningSystem.mdb;;"
Dim ds As New DataSet
Dim cnn As OleDbConnection = New OleDbConnection(MDBConnString_)
'-----use in timer
If cnn.State = ConnectionState.Closed Then
cnn.Open()
End If
Dim cmd1 As New OleDbCommand(query2, cnn)
Dim da2 As New OleDbDataAdapter(cmd1)
da2.Fill(ds, "DSSControl")
Dim t2 As DataTable = ds.Tables("DSSControl")
Dim row2 As DataRow
Dim flagvar As UInteger
For Each row2 In t2.Rows
flagvar = CUInt(row2(0))
Next
这可以正常工作,但如果我使用
而不是循环 row2 = t2.Rows(0)
flagvar = CInt(row2(0))
这并不反映'flagvar'的变化 提前谢谢!
答案 0 :(得分:0)
请更正flagvar = CUInt(row2(0))
,您使用flagvar = CInt(row2(0))
丢失数据。也许这就是问题
(INTEGER
从-2 ^ 31(-2,147,483,648)到2 ^ 31 - 1(2,147,483,647)的整数(整数)数据。存储大小为4个字节。
UINTEGER
从0到2 ^ 32的无符号整数(整数)数据(4294967295)存储大小为4个字节。)
您可能对非负值感兴趣