入力したユーザー名がまだ存在しないことを確認するには、次の方法があります。
protected void checkUsername(object source, ServerValidateEventArgs args)
{
string connString = "Data Source=server;Initial Catalog=database;User Id=username;Password=password;";
string cmdText = "SELECT COUNT(*) FROM igs_users WHERE username = @username";
using(SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
using(SqlCommand cmd = new SqlCommand(cmdText, conn))
{
cmd.Parameters.AddWithValue("@username", username);
Int32 count = (Int32)cmd.ExecuteScalar();
args.IsValid = true;
}
}
}
実行すると、次のエラーが発生します。
System.ArgumentExceptionはユーザーコードによって処理されませんでしたHResult=-2147024809メッセージ=オブジェクトタイプSystem.Web.UI.WebControls.TextBoxから既知のマネージドプロバイダーネイティブタイプへのマッピングは存在しません。Source = System.Data
デバッガーは、以下の行に対してこのエラーを表示します。
Int32 count = (Int32)cmd.ExecuteScalar();
このコードの何が問題になっているのでしょうか。