这是我第一次在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