Использование MVC 2, MySQLПрием "Duplicate enty для первичного ключа"
public ActionResult Register()
{
string name = Request.Form["name"];
string password = Request.Form["password"];
ViewData["name"] = name;
ViewData["password"] = password;
// Pasa los datos al ViewData, hace el insert
MySqlCommand cmd = new MySqlCommand("INSERT INTO tbl_alumnos(Nombre, Apellido) values('"+name+"','"+password+"')", cn);
try
{
// Intenta conectarse e insertar los datos
cn.Open();
cmd.ExecuteNonQuery();
return View("~/Views/Inicial/Inicial.aspx");
}
catch (Exception ex)
{
// si no puede, error
ViewData["ex"] = ex;
System.Diagnostics.Debug.WriteLine(ex);
return View("Error");
}
}
Это мой код из контроллера И мой код ошибки:
Lo sentimos; se produjo un error al procesar la solicitud. MySql.Data.MySqlClient.MySqlException (0x80004005): Дублировать запись '' для ключа 'PRIMARY' на MySql.Data.MySqlClient.MySqlStream.ReadPacket() в MySql.Data.MySqlClient.NativeDriver.GetResult (Int32 & affectedRow, Int64 & insertId) в MySql.Data.MySqlClient.Driver.GetResult (Int32 statementId, Int32 & affectedRows, Int64 & insertedId) в MySql.Data.MySqlClient.Driver.NextResult (Int32 statementId, Boolean force) в MySql.Data.MySqlClient.MySqlDataReader.NextResult() в MySql.Data.MySqlClient.MySqlCommand.ExecuteReader (поведение CommandBehavior) в MySql.Data.MySqlClient.MySqlCommand.ExecuteReader() в MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() в MvcApplication1.Controllers.ValidarController.Register() в E: \ Proyecto \ TestsDByAjax \ MvcApplication1 \ Controllers \ ValidarController.cs: строка 61
линия 61 говорит cmd.ExecuteNonQuery()
Во-первых, пожалуйста, не храните пароли в открытом виде. Это приложение может быть только тем, с чем вы учитесь, и, возможно, никогда не введете его в производство, но быстро сломайте эту очень плохую привычку. Во-вторых, дезинфицируйте свои входы. Используйте параметры, а не создавайте операторы SQL путем конкатенации, чтобы избежать инъекции SQL. Наконец, я предполагаю, что «Nombre» является вашим основным ключом, и поэтому вы пытаетесь вставить дубликат, следовательно, сообщение об ошибке на этот счет. –
Да, это тестовое приложение, мм, у меня есть первичный ключ под названием DNI, а не Nombre. – MiGu3X
Вы помещаете значение в 'DNI'? Уникальный для каждой записи? –