C# 来自C接口的Oracle更新查询

C# 来自C接口的Oracle更新查询,c#,oracle,sql-update,C#,Oracle,Sql Update,我对C中的更新查询有问题。奇怪的是,我对更新有问题,但是选择、删除和插入工作 public void updateTeacherInfo(string SSN, string Classroom, string salary, string tenured, string phone) { OracleConnection conn = new OracleConnection("myconnectionstring;"); conn.Open()

我对C中的更新查询有问题。奇怪的是,我对更新有问题,但是选择、删除和插入工作

  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();

    }

编辑*该方法的其余部分以清除错误,而且它不会抛出任何错误,但不会更新数据库。

放置参数。按正确的顺序添加。在更新查询中

"Update Teachers Set classroom_number = :TRM, Salary = :TSALARY, Tenured = :TTENURE, Phone_numer = :TPHONE Where SSN = :TSSN"
:TRM首先发生,同样发生。所以保留参数。也按相同的顺序添加。它会起作用的。顺序如下:

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));    

您正在使用的参数值的设置是什么?它到底是如何工作的:错误消息?没有更新?我的C接口,这是一个从form1调用的方法,变量是正确的,因为我以前让它给我一个列出所有参数的消息框。很抱歉,没有更新任何内容,但没有任何错误消息。很简单:在C中您的SSN数据类型是什么,在Oracle中它的数据类型是什么?此外,所讨论的SSN是否有前导零?我在过去处理C类型是数值int、long等,Oracle类型是字符串char、varchar2等时遇到过麻烦,或者反过来,当SSN有一个前导零或两个时,麻烦似乎会加剧。