2016-11-03 52 views
2

我将oracle数据库连接到visual studio,现在我试图执行我在数据库中创建的过程。执行Oracle过程

我尝试这样做:

  OracleCommand cmd = new OracleCommand("BEGIN ADD_USER('"+txtName.Text+"','"+txtName2.Text+"',"+txtID.Text+"); END;"); 

      cmd.ExecuteNonQuery(); 

我的程序有3个参数:名称,2name,ID。当我在sqldeveloper中使用这个命令时它工作正常,但是当我在我的项目中尝试它时出现错误。

回答

1
using (OracleConnection cn = new OracleConnection("con string")) 
{ 
    cn.Open(); 
    OracleCommand cmd = new OracleCommand("ADD_USER"); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Connection = cn; 

    cmd.Parameters.Add("YourSPParamName1", OracleDbType.{YourFieldTypeInDB}).Value = txtName.Text; 
    cmd.Parameters.Add("YourSPParamName2", OracleDbType.{YourFieldTypeInDB}).Value = txtName2.Text; 
    cmd.Parameters.Add("YourSPParamName3", OracleDbType.{YourFieldTypeInDB}).Value = txtID.Text; 

    cmd.ExecuteNonQuery(); 
} 

像这样的东西应该工作。

+0

这几乎是正确的,但是这对我帮助很大。 – ktos1234

+0

@ ktos1234哪里有错? – mybirthname

+0

我没有Parameters.AddWithValue类,我不得不使用Parameters.Add – ktos1234

0

下面是它的工作对我来说:

 OracleConnectionStringBuilder sb = new OracleConnectionStringBuilder(); 
     sb.DataSource = "localhost"; 
     sb.UserID = "something"; 
     sb.Password = "pass";   
     OracleConnection conn = new OracleConnection(sb.ToString()); 
     conn.Open(); 
      OracleCommand cmd = new OracleCommand("ADD_USER"); 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Connection = conn; 

      cmd.Parameters.Add("NAME", OracleDbType.Varchar2).Value = txtName.Text; 
      cmd.Parameters.Add("NAME2", OracleDbType.Varchar2).Value = txtName2.Text; 
      cmd.Parameters.Add("ID", OracleDbType.Int32).Value = txtID.Text; 

      cmd.ExecuteNonQuery();