Asp.net 使用AddWithValue插入-引发错误?

Asp.net 使用AddWithValue插入-引发错误?,asp.net,sql,sql-server,database,vb.net,Asp.net,Sql,Sql Server,Database,Vb.net,你好。第一个代码段将文本框值插入数据库,效果良好: Public子插入表(ByVal用户名作为字符串,ByVal密码作为字符串) 将adp设置为新的SqlCommand(“插入[users_tbl](usr_用户名,usr_密码)值(“&username&”,“&password&”),con) adp.ExecuteNonQuery() 端接头 相反,我想使用AddWithValue,所以我尝试这样做: Public子插入表(ByVal用户名作为字符串,ByVal密码作为字符串) 使用ad

你好。第一个代码段将文本框值插入数据库,效果良好:

Public子插入表(ByVal用户名作为字符串,ByVal密码作为字符串)
将adp设置为新的SqlCommand(“插入[users_tbl](usr_用户名,usr_密码)值(“&username&”,“&password&”),con)
adp.ExecuteNonQuery()
端接头


相反,我想使用AddWithValue,所以我尝试这样做:

Public子插入表(ByVal用户名作为字符串,ByVal密码作为字符串)
使用adp作为新的SqlCommand(“插入[users_tbl](usr_username,usr_password)值(@username,@password)”,con)
adp.Parameters.AddWithValue(“@usr\u username”,username)
adp.Parameters.AddWithValue(“@usr\u password”,password)
adp.ExecuteNonQuery()
终端使用
端接头
但不幸的是,它抛出了一个错误:

异常详细信息:System.Data.SqlClient.SqlException:必须声明标量变量“@username”。

为什么会出错?我的
AddWithValue
代码段可能是错误的吗


谢谢。

您的查询需要以下两个变量:

@username, @password
但您可以传递不同名称的变量:

adp.Parameters.AddWithValue("@usr_username", username)
adp.Parameters.AddWithValue("@usr_password", password)
参数名称需要匹配。大概是这样的:

adp.Parameters.AddWithValue("@username", username)
adp.Parameters.AddWithValue("@password", password)

参数名称不同,这适用于:

adp.Parameters.AddWithValue("@username", username)
adp.Parameters.AddWithValue("@password", password)
或者将sql从

INSERT INTO [users_tbl] (usr_username, usr_password) values (@username, @password)


我自己没有使用这个方法,但是看起来你应该使用
AddWithValue(“@username”,username)
而不是
“@user\u username”
谢谢你,没错。无论如何,我不知道为什么要添加很多参数,这让事情变得复杂。谢谢你,蒂姆,这很有帮助。我不确定哪一个答案应该被接受,我希望两个答案都能被接受。谢谢你,大卫,这很有帮助。我不确定应该将哪个答案设置为已接受,我希望我可以将两者都设置为已接受。
INSERT INTO [users_tbl] (usr_username, usr_password) values (@usr_username, @usr_password)