Vb.net数据库问题
我正在为我的女朋友写一个卡路里计数器工具 但我遇到了一个我真的搞不懂的问题 我在我的脚本中有一个地方,我想从数据库中取出一些信息 脚本中的具体位置很有趣,它将从一个名为“items”的表中的一个名为“antal”的行中取出数据 在我的脚本中的一个地方,我从items中调用“navn”,它工作得非常完美 在另一个地方,它给了我一个错误,行中没有任何数据 到目前为止,我的代码如下所示:Vb.net数据库问题,vb.net,Vb.net,我正在为我的女朋友写一个卡路里计数器工具 但我遇到了一个我真的搞不懂的问题 我在我的脚本中有一个地方,我想从数据库中取出一些信息 脚本中的具体位置很有趣,它将从一个名为“items”的表中的一个名为“antal”的行中取出数据 在我的脚本中的一个地方,我从items中调用“navn”,它工作得非常完美 在另一个地方,它给了我一个错误,行中没有任何数据 到目前为止,我的代码如下所示: Imports System.Data.OleDb Private Sub ins_kat_SelectedIn
Imports System.Data.OleDb
Private Sub ins_kat_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ins_kat.SelectedIndexChanged
Dim Con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Privat\MCC\mccdb.mdb")
Con.Open()
Dim command As OleDbCommand = New OleDbCommand("SELECT * FROM items WHERE kat = '" & ins_kat.Text & "' ORDER BY id DESC", Con)
Dim read As OleDbDataReader = command.ExecuteReader()
ins_mad.Items.Clear()
While read.Read()
ins_mad.Items.Add(read.Item("navn")) '<---- This place works!!!
End While
Con.Close()
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim ialt_c_counter As String
Dim ialt_c_counter_conv As Decimal
Dim ialt_c_counter_conv2 As Decimal
Dim ialt_counter As String
Dim ialt_final As Decimal
Dim Con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Privat\MCC\mccdb.mdb")
Con.Open()
Dim command1 As OleDbCommand = New OleDbCommand("SELECT * FROM food WHERE dag = '" & stat_dag.Text & "' AND maaned = '" & stat_maaned1.Text & "' AND aar = '" & stat_aar1.Text & "'", Con)
Dim read1 As OleDbDataReader = command1.ExecuteReader()
While read1.Read()
ialt_c_counter = read1.Item("antal")
ialt_c_counter_conv = System.Convert.ToDecimal(ialt_c_counter)
Dim commandX As OleDbCommand = New OleDbCommand("SELECT * FROM items", Con)
Dim reader As OleDbDataReader = commandX.ExecuteReader()
ialt_counter = reader.Item("antal") '<--- THIS ONE is giving me the error!!
ialt_c_counter_conv2 = System.Convert.ToDecimal(ialt_counter)
ialt_final = (ialt_c_counter_conv / 100 * ialt_c_counter_conv2) + ialt_final
End While
Con.Close()
MsgBox(ialt_final)
End Sub
End Class
导入System.Data.OleDb
私有子ins_kat_SelectedIndexChanged(发送方作为对象,e作为事件参数)处理ins_kat.SelectedIndexChanged
Dim Con=新的OLEDB连接(“Provider=Microsoft.Jet.OLEDB.4.0;数据源=D:\Privat\MCC\mccdb.mdb”)
Con.Open()
Dim命令作为OleDbCommand=新OleDbCommand(“从kat='”和ins_kat.Text&“ORDER BY id DESC”的项目中选择*,Con)
Dim读取为OleDbDataReader=command.ExecuteReader()
ins_mad.Items.Clear()
边读边读
ins_mad.Items.Add(read.Item(“navn”)”我猜您看到的错误是
InvalidOperationException:当不存在数据时,读取尝试无效
您从未在名为reader
的OleDbDataReader上调用Read()
请注意如何使用While
循环调用Read()
进行Read
和read1
,而不是reader
(顺便说一句,变量名不正确)。是的,这正是我得到的错误!!是的,我在其中两个地方做了一个循环。。我不在reader上这样做,因为每次我的read1循环时,它只有一个我想要得到的元素。最后一个sql字符串在我的示例中是这样的:“SELECT*FROM items”,但我希望它变成“SELECT*FROM items WHERE navn='”&a_variable_name&“,这就是为什么..使用While
循环或不使用,你必须调用Read()
读卡器上至少打开一次。。。