使用MVC 2,MySQL的接收 「主鍵重複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");
}
}
這是從控制器 我的代碼和我的錯誤代碼是:
羅sentimos;產生錯誤的過程。 MySql.Data.MySqlClient.MySqlException(0x80004005):在MySql.Data.MySqlClient.MySqlStream.ReadPacket()上的鍵「PRIMARY」的重複條目'MySql.Data.MySqlClient.NativeDriver.GetResult(Int32 & affectedRow,Int64 & insertedId )在MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId,Int32 & affectedRows,Int64 & insertedId)at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId,Boolean force)at MySql.Data.MySqlClient.MySqlDataReader.NextResult ()at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()at MvcApplication1.Controllers.ValidarController.Register()在E:\ Proyecto \ TestsDByAjax \ MvcApplication1 \ Controllers \ ValidarController.cs中:第61行
線61表示cmd.ExecuteNonQuery()
首先,請不要以明文存儲密碼。這個應用程序可能只是你正在學習的東西,可能永遠不會投入生產,但很快就會破壞這個非常糟糕的習慣。其次,清理你的輸入。使用參數而不是通過串聯創建SQL語句,以避免SQL注入。最後,我猜測'Nombre'是你的主鍵,因此你試圖插入一個重複的,因此錯誤信息的影響。 –
是的,這是一個測試應用程序,嗯,我有一個名爲DNI的主鍵,而不是Nombre – MiGu3X
您是否在'DNI'中添加了值?每個記錄獨一無二? –