我成功从我的数据库中检索了所有数据,但每当我第二次尝试时,发生了一个错误,说已经声明了变量名@uid ..
这些是我的代码。我每次使用它时都处理我的sqlcommandbuilder并关闭我的datareader ..但是仍然没有运气在我的代码中找到错误..请帮助我..而且每当我保存和更新我的数据库上的数据..它总是成功的首先尝试..但在第二次尝试..它得到相同的错误“变量名称在查询批处理或存储过程中必须是唯一的。”
Sub fillDataFields()
Dim arrImage As Byte()
con.Open()
comm.CommandText = "Select last_name + ', ' + first_name + ' ' + middle_name as name,course, section, address, " & _
"birthday, picture from Users where user_id like @uid"
comm.Connection = con
comm.Parameters.AddWithValue("@uid", "" & frmUsers.ListView1.SelectedItems(0).Text & "%")
dr = comm.ExecuteReader
While (dr.Read())
arrImage = dr.Item("picture")
Dim mstream As New System.IO.MemoryStream(arrImage)
txtCourse.Text = (dr("course"))
txtSection.Text = (dr("section"))
richtxtAddress.Text = (dr("address"))
txtBirthday.Text = (dr("birthday"))
txtName.Text = (dr("name"))
PictureBox1.Image = Image.FromStream(mstream)
End While
con.Close()
dr.Close()
comm.Dispose()
End Sub
答案 0 :(得分:2)
您的命令对象仍然附加了参数,因此您应该确保创建对象的新实例并在完成后正确处理它们:
con = New Connection("connection string here")
con.Open()
comm = New Command
comm.CommandText = "command text here"
然后在你完成它之后处理掉它:
comm.Dispose
con.Close
con.Dispose
更好地将它包装在Using块中,因为这样可以确保它被丢弃:
Using con As New Connection("your connection String Here"), comm as New Command
con.Open()
comm.CommandText = "command text here"
...
...
con.Close
End Using 'con and comm objects are disposed here
附注:我建议将Command对象重命名为cmd
,以使其看起来与Connection对象不相似。