我试图检查用户是否存在于SQL Server中的表内。我已经创建连接字符串,打开的连接 -ExecuteScalar SQLException:标量变量未声明
var settings = ConfigurationManager.ConnectionStrings["BlogEngine"].ConnectionString;
SqlConnection conn = new SqlConnection(settings);
using (conn)
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
var checkUser = "SELECT COUNT(*) FROM dbo.be_Users WHERE UserName = @UserName";
using (SqlCommand userquery = new SqlCommand(checkUser,conn))
{
var parma = userquery.Parameters;
parma.AddWithValue("@UserName", activedirectory.DisplayName);
int UserExist = (int)userquery.ExecuteScalar();
if (UserExist > 0)
{
//Username exist
AuthenticateUser(staffId, password, rmb);
}
else
{
//Username doesn't exist.
var sqlQuery = "INSERT INTO dbo.be_Users (BlogID, UserName, Password, LastLoginTime, EmailAddress, Department)" + "VALUES (@BlogID, @UserName, @Password, @LastLoginTime, @EmailAddress, @Department)";
using (SqlCommand qe = new SqlCommand(sqlQuery))
{
var parms = qe.Parameters;
parms.AddWithValue("@BlogID", Blog.CurrentInstance.Id.ToString());
parms.AddWithValue("@UserName", activedirectory.DisplayName);
parms.AddWithValue("@Password", (passwordFormat == MembershipPasswordFormat.Hashed ? Utils.HashPassword(DEFAULT_PASSWORD) : DEFAULT_PASSWORD));
parms.AddWithValue("@LastLoginTime", DateTime.Now);
parms.AddWithValue("@EmailAddress", DEFAULT_EMAIL);
parms.AddWithValue("@Department", activedirectory.department);
qe.ExecuteNonQuery();
}
AuthenticateUser(staffId, password, rmb);
}
}conn.Close();
}
我不断收到此错误 - 类型“System.Data.SqlClient.SqlException”的异常出现在System.Data.dll中,但在用户代码中没有处理
附加信息:必须声明标量变量“@UserName”。
在行处发生异常。
请问我该如何解决?
嗯......为什么呢?有原因吗?特别是有没有与这个问题有关的原因?我会**不会**期望这种改变对问题中报告的问题产生任何影响。 –