#c# #asp.net #mysql
#c# #asp.net #mysql
Вопрос:
Я пытаюсь создать страницу aspx для входа в систему.
Что я здесь делаю не так?
MySqlConnection cn = new MySqlConnection("Server=localhost;Database=securitytest; User=root;Password=sx;");
cn.Open();
MySqlCommand cmd = new MySqlCommand("Select * from login where username=@username and password=@password", cn);
//Add parameters to get the username and password
cmd.Parameters.Add("@username", OdbcType.VarChar);
cmd.Parameters["@username"].Value = this.Login1.UserName;
cmd.Parameters.Add("@password", OdbcType.VarChar);
cmd.Parameters["@password"].Value = this.Login1.Password;
MySqlDataReader dr = default(MySqlDataReader);
// Initialise a reader to read the rows from the login table.
// If row exists, the login is successful
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
e.Authenticated = true;
// Event Authenticate is true
}
Ответ №1:
Поставщик базы данных MySQL использует ? чтобы найти параметры в SQL. Итак, использовать ? вместо @ для обозначения ваших параметров в вашем SQL-запросе:
MySqlCommand cmd = new MySqlCommand("Select * from login where username=?username and password=?password", cn);
cmd.Parameters.Add("?username", OdbcType.VarChar);
cmd.Parameters["?username"].Value = this.Login1.UserName;
...
Надеюсь, это поможет.
Комментарии:
1. @Mike: Я не имею в виду поставщика ODBC. Смотрите эту ссылку dev.mysql.com/doc/refman/5.0/es /… для поставщика MySQL .Net. Там вы найдете примечание, в котором говорится: Предыдущие версии провайдера использовали символ «@» для обозначения параметров. Используется новая версия? вместо этого.