을 삭제합니다. 어떤 이유로 UPDATE가 SQL Server 데이터베이스를 업데이트하는 대신 레코드를 삭제합니다. 하나의 변수를 전달하려고 시도 (및 다른 개별 필드를 변경) 및 100 % 삭제합니다. 나는 또한 DBNull 문제를 다루지 않기 때문에 데이터가 전달되었는지 확인했습니다. 내 SO와 Google 검색은 삭제 된 다음 레코드 업데이트를 위해 행 프로세스를 추가합니다. 여기에 무슨 일이 벌어지고 있을까요?SQL UPDATE가 레코드
protected void grdvMyEntries_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string Task = (grdvMyEntries.Rows[e.RowIndex].FindControl("ddlTasks") as DropDownList).SelectedItem.Value;
string Code = (grdvMyEntries.Rows[e.RowIndex].FindControl("ddlPayrollCodes") as DropDownList).SelectedItem.Value;
DateTime strDate = Convert.ToDateTime((grdvMyEntries.Rows[e.RowIndex].FindControl("txtDateEdit") as TextBox).Text.Trim());
string TimeIn = (grdvMyEntries.Rows[e.RowIndex].FindControl("txtTimeInEdit") as TextBox).Text.Trim();
string TimeOut = (grdvMyEntries.Rows[e.RowIndex].FindControl("txtTimeOutEdit") as TextBox).Text.Trim();
string ItemNo = (grdvMyEntries.Rows[e.RowIndex].FindControl("txtItemNo") as TextBox).Text.Trim();
string WO = (grdvMyEntries.Rows[e.RowIndex].FindControl("txtWO") as TextBox).Text.Trim();
string WIP = (grdvMyEntries.Rows[e.RowIndex].FindControl("txtWIP") as TextBox).Text.Trim();
string Note = (grdvMyEntries.Rows[e.RowIndex].FindControl("txtNote") as TextBox).Text.Trim();
string TimeID = grdvMyEntries.DataKeys[e.RowIndex].Value.ToString();
string strConnString = ConfigurationManager.ConnectionStrings["MAFapp"].ConnectionString;
string strTmp = "Date:" + strDate + "|TimeIn:" + TimeIn + "|TimeOut:" + TimeOut + "|WIP:" + WIP + "|WO:" + WO + "|ItemNo:" + ItemNo + "|Task:" + Task + "|Code:" + Code + "|Note:" + Note + "|WHERE TimeID:" + TimeID;
Debug.Print(strTmp);
using (SqlConnection con = new SqlConnection(strConnString))
{
string query = "UPDATE Time SET [Date][email protected], [TimeIn][email protected], [TimeOut][email protected], [WIP][email protected], [WO][email protected], [ItemNo][email protected], [Task][email protected], [Code][email protected], [Note][email protected] WHERE [TimeID][email protected]";
Debug.WriteLine(query);
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.Connection = con;
cmd.Parameters.AddWithValue("@TimeID", TimeID);
cmd.Parameters.AddWithValue("@Date", strDate);
cmd.Parameters.AddWithValue("@TimeIn", TimeIn);
cmd.Parameters.AddWithValue("@TimeOut", TimeOut);
if (String.IsNullOrWhiteSpace(WIP.Trim()))
{
cmd.Parameters.AddWithValue("@WIP", WIP).Value = Convert.DBNull; ;
}
else
{
cmd.Parameters.AddWithValue("@WIP", WIP);
}
if (String.IsNullOrWhiteSpace(WO.Trim()))
{
cmd.Parameters.AddWithValue("@WO", WO).Value = Convert.DBNull; ;
}
else
{
cmd.Parameters.AddWithValue("@WO", WO);
}
if (String.IsNullOrWhiteSpace(ItemNo.Trim()))
{
cmd.Parameters.AddWithValue("@ItemNo", ItemNo).Value = Convert.DBNull; ;
}
else
{
cmd.Parameters.AddWithValue("@ItemNo", ItemNo);
}
if (String.IsNullOrWhiteSpace(Task.Trim()))
{
cmd.Parameters.AddWithValue("@Task", Task).Value = Convert.DBNull; ;
}
else
{
cmd.Parameters.AddWithValue("@Task", Task);
}
cmd.Parameters.AddWithValue("@Code", Code);
if (String.IsNullOrWhiteSpace(Note.Trim()))
{
cmd.Parameters.AddWithValue("@Note", Note).Value = Convert.DBNull; ;
}
else
{
cmd.Parameters.AddWithValue("@Note", Note);
}
con.Open();
cmd.ExecuteNonQuery();
con.Close();
tblSummary.DataBind();
grdvMyEntries.DataBind();
}
}
}
테이블을 비틀 었습니까? 없으면 업데이트가있는 레코드를 삭제할 수 없습니다. 어쩌면 당신은 NULL로 일부 필드를 가지고 있으며 귀하의 확인 쿼리가 그들을 인식하지 못합니다 –
당신은 행이 누락 된 데이터베이스 테이블을 확인 했습니까 (조가 그 업데이트 자체에 의해 삭제 될 수 없다고)? 일부 업데이트에서 "잘못된"선택으로 인해 행이 업데이트되지 않을 수 있습니까? – Thorarins
@Joe Taras 언급처럼 테이블에 트리거가 없으면 Update 문을 사용하여 삭제할 수 없습니다. –