2013-04-16 42 views
0

我遇到了C#中的更新查詢問題。對我來說,我遇到更新問題很奇怪,但選擇,刪除和插入工作。來自C#界面的Oracle更新查詢

public void updateTeacherInfo(string SSN, string Classroom, string salary, string tenured, string phone) 
    { 

     OracleConnection conn = new OracleConnection("myconnectionstring;"); 

     conn.Open(); 
     OracleCommand cmd = new OracleCommand("Update Teachers Set classroom_number = :TRM, Salary = :TSALARY, Tenured = :TTENURE, Phone_numer = :TPHONE Where SSN = :TSSN", conn); 
     OracleCommand commit = new OracleCommand("COMMIT", conn); 
     cmd.Parameters.Add(new OracleParameter(":TSSN", SSN)); 
     cmd.Parameters.Add(new OracleParameter(":TRM", Classroom)); 
     cmd.Parameters.Add(new OracleParameter(":TSALARY", salary)); 
     cmd.Parameters.Add(new OracleParameter(":TTENURE", tenured)); 
     cmd.Parameters.Add(new OracleParameter(":TPHONE", phone)); 


     int i = cmd.ExecuteNonQuery(); 
     int k = commit.ExecuteNonQuery(); 

     MessageBox.Show(i + " rows affected"); 
     MessageBox.Show(k + " rows affected"); 


     conn.Close(); 

    } 

編輯 *來澄清一些事情的方法,而且,它不拋出任何錯誤,但不更新數據庫的其餘部分。

+0

什麼是設置您正在使用的參數的值? – Brian

+1

究竟是如何不工作:錯誤信息?沒有更新? –

+0

我的C#接口,這是一個從form1調用的方法,變量是正確的,因爲我以前給它一個消息框,列出所有參數。 – timrate

回答

1

將Parameters.Add放入正確的順序。在您的更新查詢中

"Update Teachers Set classroom_number = :TRM, Salary = :TSALARY, Tenured = :TTENURE, Phone_numer = :TPHONE Where SSN = :TSSN" 

:TRM首先發生並且同樣發生。所以保持Parameters.Add也是以相同的順序。它會工作。序列將爲:

cmd.Parameters.Add(new OracleParameter(":TRM", Classroom)); 
cmd.Parameters.Add(new OracleParameter(":TSALARY", salary)); 
cmd.Parameters.Add(new OracleParameter(":TTENURE", tenured)); 
cmd.Parameters.Add(new OracleParameter(":TPHONE", phone)); 
cmd.Parameters.Add(new OracleParameter(":TSSN", SSN));