ユーザーが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"を宣言する必要があります。
例外は、行で発生します。
どうすれば解決できますか?
parma.AddWithValue("@UserName", activedirectory.DisplayName);
私の推測では、activedirectory.DisplayName
がnull
であることを次のようになります。
ええと...なぜ?理由はありますか?特に、その質問に関連する理由はありますか?私はその質問が報告した問題に何らかの変化をもたらすためにその変化を期待していません**。 –