私は理解していないエラーが発生し続けます。 スカラー変数 "@varname"を宣言する必要がありますスカラー変数 "@UserName"を宣言する必要があります
何時間もの研究を経て、何時間も成功しなかった。
2つのテキストボックスを使用するログインページを作成し、ユーザーがSqlデータベースに格納された情報に基づいて終了するかどうかを確認するボタンを作成します。
私は問題がから来ていると思う場所です。特にどこ
private bool DBConnection(string userName, string password)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
//string cmdString = ("SELECT UserName, Password FROM Users WHERE UserName ='" + userName +
// "'AND Password ='" + password + "'"); //REMOVED AS THIS IS PRONE TO SQL INJECTIONS
string cmdString = ("SELECT * FROM Users WHERE UserName = @uname AND Password = @pw");
SqlCommand cmd = new SqlCommand(cmdString, conn);
cmd.Parameters.Add("uname", SqlDbType.VarChar).Value = userName;
cmd.Parameters.Add("pw", SqlDbType.VarChar).Value = password;
DataSet loginCredentials = new DataSet();
SqlDataAdapter dataAdapter;
try
{
if (conn.State.Equals(ConnectionState.Closed))
{
conn.Open();
dataAdapter = new SqlDataAdapter(cmdString, conn);
dataAdapter.Fill(loginCredentials);
conn.Close();
if (loginCredentials != null)
{
if (loginCredentials.Tables[0].Rows.Count > 0)
{
return true;
}
else
{
lblMessage.Text = "Incorrect Username or Password";
lblMessage.Visible = true;
}
}
}
}
catch (Exception err)
{
lblMessage.Text = err.Message.ToString() + " Error connecting to the Database // " + cmd.Parameters.Count;
lblMessage.Visible = true;
return false;
}
return false;
}
"dataAdapter.Fill(loginCredentials);"実行中です。
コメントアウトされたステートメントは、正しいユーザー名とパスワードを使用してユーザーにログインすると正常に動作しますが、安全でないことがわかっている限り、SQLインジェクションに対する脆弱性があるため、SQLステートメント。以下
任意の助けいただければ幸いです。
すなわち特定の変数に割り当てられている場合ということです); ' ' dataAdapter.SelectCommand = cmd; 'を使用してください –
他の場所へのリンクとしてエラーを投稿しないでください。 現在は利用できません。したがって、誰もそれを見ることができません。 – Richard
@リチャード・ヘム。リンクは私のために働くが、質問にimgを埋め込む。正当性については、あなたが特定の評判を必要とした日に戻って質問をすることができます:) –