简体   繁体   中英

C# Oracle database connection

I am trying to connect to an oracle database using C#.

Here is my code:

      OracleConnection conn = new OracleConnection(); // C#
           conn.ConnectionString = oradb;
        conn.Open();
        string sql = " select department_name from departments where department_id = 10"; // C#
        OracleCommand cmd = new OracleCommand();
        cmd.CommandText = sql;
        cmd.Connection = conn;
        cmd.CommandType = CommandType.Text; ///this is the line that gives the error

What is the proper way to set the command type? Thank you.

Using Store Procedure :

using (OracleConnection conn = new OracleConnection( oradb ))
{
      conn.Open();
      OracleCommand cmd = new OracleCommand("StoreProcedureName", con);
      cmd.CommandType = CommandType.StoredProcedure;   

      //specify command parameters 
      //and Direction

      using(OracleDataReader reader = cmd.ExecuteReader())
      {
          while (reader.Read())
          {
             //string s = reader.GetInt32(0) + ", " + reader.GetInt32(1);
          }
      }                   
}

CommandType.Text : (not mandatory to specify CommandType).

using (OracleConnection conn = new OracleConnection( oradb ))
{
      string sql = @"SELECT department_name FROM departments 
                     WHERE department_id = @department_id";
      conn.Open();
      OracleCommand cmd = new OracleCommand(sql, conn);

      //specify command parameters
      cmd.Parameters.Add(new OracleParameter("@department_id", 10));

      using(OracleDataReader reader = cmd.ExecuteReader())
      {
          while (reader.Read())
          {
             //string s = reader.GetString(0);
          }
      }                   
}

Make sure you toss each of these pieces in a using() statement, ie

using( OracleConnection conn = new OracleConnection( oradb ) )
{
    conn.Open();

    using( OracleCommand cmd = new OracleCommand( "sql here", conn ) )
    {
        //cmd.Execute(); cmd.ExecuteNonQuery();
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM