2014-04-19 6 views
0

C# 형식의 테이블로 데이터를 업데이트하는 데 문제가 있습니다. 누군가 내가 뭘 잘못하고 있는지 말할 수 있습니까? 그것은 나에게 오류를주지 않으며 그것이 성공적으로 제출되었다고 말한다. 그러나 내 데이터베이스는 변경 사항을 표시하지 않습니다.C# 형식의 데이터 입력

try 
     { 

      string cmdstring = "UPDATE Test SET COLLECTION_DATE = '@date', SPECIMANID = '@spec', TEST_RESULT = '@result', SUBSTANCE_RESULT = '@substance' WHERE PEOPLESOFT_EMPL_ID = @empID ;"; 
      using (OleDbCommand cmd = new OleDbCommand(cmdstring, con)) 
      { 

       cmd.Parameters.Add("@date", OleDbType.Date).Value = dateTimePicker1.Value; 
       cmd.Parameters.Add("@spec", OleDbType.Char).Value = textBoxSpec.Text; 
       cmd.Parameters.Add("@result", OleDbType.Char).Value = comboBoxResult.Text; 
       cmd.Parameters.Add("@substance", OleDbType.Char).Value = comboBoxSubstance.Text; 
       cmd.Parameters.Add("@empID", OleDbType.Char).Value = textBoxID.Text; 



       con.Open(); 
       cmd.ExecuteNonQuery(); 
       con.Close(); 
       MessageBox.Show("Submitted Successfully"); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Failed due to " + ex.Message); 
     } 

답변

0

문제 : 당신은 작은 따옴표 내에 업데이트 쿼리에 매개 변수를 둘러싸고 있습니다.

솔루션 : 당신은 업데이트 쿼리의 매개 변수 주위에 따옴표를 제거 할 필요가 있도록, 작은 따옴표 내에서 매개 변수를 둘러싸는 안매개 변수화 쿼리를 사용하는 동안.

이 시도 :

string cmdstring = "UPDATE Test SET COLLECTION_DATE = @date, SPECIMANID = @spec, 
TEST_RESULT = @result, SUBSTANCE_RESULT = @substance WHERE PEOPLESOFT_EMPL_ID = 
                     @empID ;"; 

제안 사항 : 당신은 쿼리 실행 상태를 확인하지 않고 성공 mesaage을 표시하고 있습니다.

성공 메시지를 표시하기 전에 ExecuteNonQuery() 반환 값을 확인하는 것이 좋습니다.

MSDN에서

: ExecuteNonQuey()

연결 및 반환 영향을받는 행의 수에 대해 Transact-SQL 문을 실행합니다.

이 시도 :

int rowsUpdated = cmd.ExecuteNonQuery(); 
if(rowsUpdated > 0) 
    MessageBox.Show("Records Inserted Successfully!"); 
else 
    MessageBox.Show("Insertion Failed!"); 
+0

신난다, 그것은했다. 정말 고맙습니다! – user3538446

+0

@ user3538446 : 환영합니다 :) 도움이된다면 답변으로 표시하십시오. –