Visual Studio 2010을 사용하여 C#에서 Win Form을 만듭니다. 소수의 Comboboxes와 사용자가 입력하고 Access DB에 제출할 수있는 텍스트 상자가 있습니다. 내 문제는 기존 항목을 업데이트하려고 할 때 발생합니다. 기존 항목을로드하고 변경 한 후 업데이트를 클릭합니다. 시스템 오류가 발생하지 않아 DB에 대한 연결이 성공적이지만 데이터에 실제로 변경이 없습니다. 완전히 빠진 것이 있습니까? 도움이나 통찰력에 미리 감사드립니다. 여기 기존 데이터베이스 항목 업데이트 C# VS2010
업데이트 버튼에 대한 코드입니다 :private void updateButton_Click_1(object sender, EventArgs e)
{
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\servicereq1.mdb";
OleDbCommand cmd = new OleDbCommand("UPDATE servicereq SET DateLogged = @datelogged, LoggedBy = @loggedby, Function = @function, [Other Impacts] = @summary, Account = @earningsaccount, [From] = @from, [To] = @to, Description = @description, Fixer = @fixer, [Time Estimate] = @timeestimate, [Actual Start] = @actualstart, [Actual Finish] = @actualfinish, [Actual Time] = @actualtime, [Programs/Forms] = @programsforms, Comments = @comments, [Retest Date] = @requestdate, Tester = @tester, Status = @status, [Problem In Environment] = @problemfoundin, [Code In Environment] = @codein WHERE (ServiceRequestNumber = @servreq)");
cmd.Connection = conn;
conn.Open();
if (conn.State == ConnectionState.Open)
{
cmd.Parameters.AddWithValue("@servreq", serviceRequestNumberTextBox.Text);
cmd.Parameters.AddWithValue("@datelogged", dateLoggedTextBox.Text);
cmd.Parameters.AddWithValue("@loggedby", loggedByComboBox.Text);
cmd.Parameters.AddWithValue("@problemfoundin", problem_In_EnvironmentComboBox.Text);
cmd.Parameters.AddWithValue("@function", functionTextBox.Text);
cmd.Parameters.AddWithValue("@summary", other_ImpactsTextBox.Text);
cmd.Parameters.AddWithValue("@earningsaccount", accountTextBox.Text);
cmd.Parameters.AddWithValue("@from", fromTextBox.Text);
cmd.Parameters.AddWithValue("@to", toTextBox.Text);
cmd.Parameters.AddWithValue("@status", statusComboBox.Text);
cmd.Parameters.AddWithValue("@description", descriptionTextBox.Text);
cmd.Parameters.AddWithValue("@fixer", fixerComboBox.Text);
cmd.Parameters.AddWithValue("@codein", code_In_EnvironmentComboBox.Text);
cmd.Parameters.AddWithValue("@programsforms", programs_FormsTextBox.Text);
cmd.Parameters.AddWithValue("@timeestimate", time_EstimateTextBox.Text);
cmd.Parameters.AddWithValue("@actualstart", actual_StartTextBox.Text);
cmd.Parameters.AddWithValue("@actualfinish", actual_FinishTextBox.Text);
cmd.Parameters.AddWithValue("@actualtime", actual_TimeTextBox.Text);
cmd.Parameters.AddWithValue("@requestdate", retest_DateTextBox.Text);
cmd.Parameters.AddWithValue("@tester", testerComboBox.Text);
cmd.Parameters.AddWithValue("@comments", commentsTextBox.Text);
try
{
cmd.ExecuteNonQuery();
MessageBox.Show("Form Updated Successfully");
conn.Close();
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message);
conn.Close();
}
}
else
{
MessageBox.Show("Connection Failed");
}
}
}
그리고 공백이있는 열 머리글을 사용하는 것이 잘못 설정된 것을 알고 있습니다. 나는이 테이블을 다른 누군가에게 물려 받았고, 나는 그들을 변경하지 말 것을 요청 받았다 :-( – AndrewD
SQL 문에서 변수를 사용하는 이유가 있습니까? 일반적으로 SQL을 제거하기 위해 저장 프로 시저를 호출하기 때문에 parameters.AddWithValue()를 사용합니다. – DotN3TDev
나는 그것을 바꿔서 더 나은 운임을 볼 것입니다. – AndrewD