我有以下代码,我使用dataadapter从sql数据库表中选择数据,但抛出错误:
“必须声明标量变量” @UserName”
代码错误在哪里??
我尝试了下面的代码,该代码引发错误“必须声明标量变量” @UserName”
Dim Query as string ="SELECT *FROM UserLogins WHERE [Login Name]=
@Username AND Password=@passcode"
// add parameters to dataadapter select command
SQL.da.SelectCommand.Parameters.AddWithValue("@Username", "%" +
txtuserName.Text + "%")
SQL.da.SelectCommand.Parameters.AddWithValue("@passcode", "%" +
txtpasslogin.Text + "%")
//execute query and fill dataset
da = New SqlDataAdapter(Query,Con)
cb = New SqlCommandBuilder(da)
ds = New DataSet
da.Fill(ds)
Datagridview1.Datasource=ds.tables(0)
答案 0 :(得分:0)
嗯,好的,这段代码发生了很多奇怪的事情。
首先。用两个斜杠(//)不能在VB.NET中进行注释。那是C#语法。请使用单引号(')
接下来,您收到的错误是来自SQL Server的错误。
“必须声明标量变量@UserName”
LarsTech在他的评论中特别提到,您提供的代码是先添加变量,然后再创建SQLDataAdapter的新实例。如果您修改代码以首先创建数据适配器,然后填充变量,则应该得到更好的结果。
我不会假设变量da,cb和ds已经声明,但是变量Con已在某个地方声明。
Dim Query as string ="SELECT * FROM UserLogins WHERE [Login Name]=
@Username AND Password=@passcode"
'Note that I moved these two lines up here and made sure they were properly declared
Dim da as New SqlDataAdapter(Query,Con)
Dim cb as New SqlCommandBuilder(da)
' add parameters to dataadapter select command
da.SelectCommand.Parameters.AddWithValue("@Username", "%" +
txtuserName.Text + "%")
da.SelectCommand.Parameters.AddWithValue("@passcode", "%" +
txtpasslogin.Text + "%")
' execute query and fill dataset
ds = New DataSet
da.Fill(ds)
Datagridview1.Datasource=ds.tables(0)
最后,您的sql语句在*和FROM之间也应该有一个空格,并且正如Mary在注释中提到的那样,此处没有必要使用%号,因为您没有做类似的事情。