2014-02-19 74 views
1

我想从c#代码执行oracle存储过程。 我正在尝试将oracle参数添加到过程。但是在添加时我收到异常,例如“OracleParameter对象已经包含在集合中”。请帮我解决这个问题。OracleParameter对象已经包含在一个集合中

代码:

using Oracle.DataAccess.Client; 
using System; 
using System.Collections.Generic; 
using System.Data; 
using System.Data.SqlClient; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace Activity.Account 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      SuccessLabel.Visible = false; 
      FailureLabel.Visible = false; 
     } 

     protected void Create_user(object sender, EventArgs e) 
     { 
      string oradb = "Data Source=OracleServerHost;User ID=scott;password=tiger"; 
      using (OracleConnection conn = new OracleConnection(oradb)) 
      { 
       try 
       { 
        OracleCommand cmd = new OracleCommand("create_users_372640", conn); 
        cmd.CommandType = CommandType.StoredProcedure; 
        OracleParameter p1 = new OracleParameter("u_user_id", UserIDTextBox.Text); 
        OracleParameter p2 = new OracleParameter("u_First", FirstNameTextBox.Text); 
        OracleParameter p3 = new OracleParameter("u_Last", LastNameTextBox.Text); 
        OracleParameter p4 = new OracleParameter("u_Email", EmailIDTextBox.Text); 
        OracleParameter p5 = new OracleParameter("u_password", PasswordTextBox.Text); 
        cmd.Parameters.Add(p1); 
        cmd.Parameters.Add(p2); 
        cmd.Parameters.Add(p3); 
        cmd.Parameters.Add(p4); 
        cmd.Parameters.Add(p5); 
        OracleCommand cmd_chk = new OracleCommand("check_user_372640", conn); 
        cmd_chk.CommandType = CommandType.StoredProcedure; 
        cmd_chk.Parameters.Add(p1); 
        conn.Open(); 
        OracleDataReader rd = cmd_chk.ExecuteReader(); 
        if (rd.HasRows) 
        { 
         rd.Read(); 
         SuccessLabel.Visible = true; 
         FailureLabel.Visible = false; 
        } 
        else 
        { 
         SuccessLabel.Visible = false; 
         FailureLabel.Visible = true; 
        } 
       }catch(Exception){ 
        Console.WriteLine("SQL Exception Occured"); 
       } 
      } 

     } 
    } 
} 

回答

2

你不能有一个参数对象的多个集合。 这是你的问题:

cmd.Parameters.Add(p1); 
cmd_chk.Parameters.Add(p1); 
相关问题