這是我第一次在Stackoverflow。所以我只想在C#中使用ADO.NET提出關於登錄驗證的問題。在C#中使用ADO.NET進行身份驗證登錄#
所以就這樣了。
我偶然發現一本名爲「Syngress-SQL Injection Attacks and Defenses」的電子書,我對這本書給出的例子有些困惑。
這裏是書裏面我用的例子混淆示例代碼
SqlConnection con = new SqlConnection(ConnectionString);
string Sql = "SELECT * FROM users WHERE [email protected]" + "AND [email protected]";
cmd = new SqlCommand(Sql, con);
// Add parameters to SQL query
cmd.Parameters.Add("@username", // name
SqlDbType.NVarChar, // data type
16); // length
cmd.Parameters.Add("@password",
SqlDbType.NVarChar,
16);
cmd.Parameters.Value["@username"] = username; // set parameters
cmd.Parameters.Value["@password"] = password; // to supplied values
reader = cmd.ExecuteReader();
我很困惑與「cmd.Parameters.Value」的一部分,因爲當嘗試代碼沒有參數.Value在我的IDE中給出。
所以我所做的是我使用cmd.Parameters.AddWithValue(「?cashieruser」,cashieruser);比Parameters.Value因爲它不是在Visual Studio 2010
這裏的智能感知發現是我的代碼:
public bool isAuth(String cashieruser, String cashierpass)
{
bool IsAuth = false;
con.ConnectionString = conString;
String sql = "SELECT * FROM cashieraccount WHERE cashieruser = ?cashieruser" + "AND cashierpass = ?cashierpass";
MySqlCommand cmd = new MySqlCommand(sql, con);
//Add parameters to SQL Query
cmd.Parameters.Add("?cashieruser", MySqlDbType.VarChar, 35);
cmd.Parameters.Add("?cashierpass", MySqlDbType.VarChar, 15);
cmd.Parameters.AddWithValue("?cashieruser", cashieruser);
cmd.Parameters.AddWithValue("?cashierpass", cashierpass);
cmd.ExecuteScalar();
try
{
con.Open();
MySqlDataReader rdr = cmd.ExecuteReader();
if (rdr.Read())
{
IsAuth = true;
}
else
IsAuth = false;
}
finally
{
con.Close();
}
return IsAuth;
}
所以我有一個例外:「‘?cashieruser’參數已經被定義。」 那麼,我將使用什麼語法來設置參數並提供值? 通過它的工作原理與ADO.NET