Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net数据库问题_Vb.net - Fatal编程技术网

Vb.net数据库问题

Vb.net数据库问题,vb.net,Vb.net,我正在为我的女朋友写一个卡路里计数器工具 但我遇到了一个我真的搞不懂的问题 我在我的脚本中有一个地方,我想从数据库中取出一些信息 脚本中的具体位置很有趣,它将从一个名为“items”的表中的一个名为“antal”的行中取出数据 在我的脚本中的一个地方,我从items中调用“navn”,它工作得非常完美 在另一个地方,它给了我一个错误,行中没有任何数据 到目前为止,我的代码如下所示: Imports System.Data.OleDb Private Sub ins_kat_SelectedIn

我正在为我的女朋友写一个卡路里计数器工具

但我遇到了一个我真的搞不懂的问题

我在我的脚本中有一个地方,我想从数据库中取出一些信息

脚本中的具体位置很有趣,它将从一个名为“items”的表中的一个名为“antal”的行中取出数据

在我的脚本中的一个地方,我从items中调用“navn”,它工作得非常完美

在另一个地方,它给了我一个错误,行中没有任何数据

到目前为止,我的代码如下所示:

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()
读卡器上至少打开一次
。。。