Call Oracle from ADO.NET: C#, OCI: Work in a Disconnected Environment: Listing 6

Invoke the procedures defined in the human_resources package using the DataSet and DataAdapter objects model in order to access the Employee entities in a disconnected environment.

using System;
using System.Text;
using System.Data.OracleClient;
using System.Data;

namespace Invoke_PLSQL_Code
{
   class Program
   {
      static void Main(string[] args)
      {
         using (OracleConnection objConn = new 
            OracleConnection(
            "Data Source=orcl; 
            User ID=scott; Password=tiger")) 
         {
            OracleDataAdapter objAdapter = new 
               OracleDataAdapter();

            OracleCommand objSelectCmd = new 
               OracleCommand();
            objSelectCmd.Connection = objConn;
            objSelectCmd.CommandText = 
               "human_resources.select_employee";
            objSelectCmd.CommandType = 
               CommandType.StoredProcedure;
            objSelectCmd.Parameters.Add("cur_employee", 
               OracleType.Cursor).Direction = 
               ParameterDirection.Output;
            objAdapter.SelectCommand = objSelectCmd;

            OracleCommand objInsertCmd = new 
               OracleCommand();
            objInsertCmd.Connection = objConn;
            objInsertCmd.CommandText = 
               "human_resources.insert_employee";
            objInsertCmd.CommandType = 
               CommandType.StoredProcedure;
            objInsertCmd.Parameters.Add("p_empno", 
               OracleType.Number, 4, "empno");
            objInsertCmd.Parameters.Add("p_ename", 
               OracleType.VarChar, 10, "ename");
            objInsertCmd.Parameters.Add("p_job", 
               OracleType.VarChar, 9, "job");
            objInsertCmd.Parameters.Add("p_mgr", 
               OracleType.Number, 4, "mgr");
            objInsertCmd.Parameters.Add("p_hiredate", 
               OracleType.DateTime, 12, "hiredate");
            objInsertCmd.Parameters.Add("p_sal", 
               OracleType.Number, 7, "sal");
            objInsertCmd.Parameters.Add("p_comm", 
               OracleType.Number, 7, "comm");
            objInsertCmd.Parameters.Add("p_deptno", 
               OracleType.Number, 7, "deptno");
            objAdapter.InsertCommand = objInsertCmd;

            OracleCommand objUpdateCmd = new 
               OracleCommand();
            objUpdateCmd.Connection = objConn;
            objUpdateCmd.CommandText = 
               "human_resources.update_employee";
            objUpdateCmd.CommandType = 
               CommandType.StoredProcedure;
            objUpdateCmd.Parameters.Add("p_empno", 
               OracleType.Number, 4, "empno");
            objUpdateCmd.Parameters.Add("p_ename", 
               OracleType.VarChar, 10, "ename");
            objUpdateCmd.Parameters.Add("p_job", 
               OracleType.VarChar, 9, "job");
            objUpdateCmd.Parameters.Add("p_mgr", 
               OracleType.Number, 4, "mgr");
            objUpdateCmd.Parameters.Add("p_hiredate", 
               OracleType.DateTime, 10, "hiredate");
            objUpdateCmd.Parameters.Add("p_sal", 
               OracleType.Number, 7, "sal");
            objUpdateCmd.Parameters.Add("p_comm", 
               OracleType.Number, 7, "comm");
            objUpdateCmd.Parameters.Add("p_deptno", 
               OracleType.Number, 7, "deptno");
            objAdapter.UpdateCommand = objUpdateCmd;

            OracleCommand objDeleteCmd = new 
               OracleCommand();
            objDeleteCmd.Connection = objConn;
            objDeleteCmd.CommandText = 
               "human_resources.delete_employee";
            objDeleteCmd.CommandType = 
               CommandType.StoredProcedure;
            objDeleteCmd.Parameters.Add("p_empno", 
               OracleType.Number, 4, "empno");
            objAdapter.DeleteCommand = objDeleteCmd;

            try
            {
               DataTable dtEmp = new DataTable();
               objAdapter.Fill(dtEmp);

               System.Console.WriteLine(
                  "Employee count = {0}", 
                  dtEmp.Rows.Count);

               dtEmp.Rows.Add(7935, "John", "Manager", 
                  7782, DateTime.Now, 1300, 0, 10);
               objAdapter.Update(dtEmp);

               foreach (DataColumn objColumn in 
                  dtEmp.Columns)
               {
                  System.Console.Write("{0}\t", 
                     objColumn.Caption);
               }
               System.Console.WriteLine();

               foreach (DataRow objRow in dtEmp.Rows)
               {
                  for(int i=0; i<dtEmp.Columns.Count; i++)
                  {
                     System.Console.Write("{0}\t", 
                     objRow[i].ToString());
                  }
                  System.Console.WriteLine();
               }

               System.Console.WriteLine(
                  "Employee count = {0}", 
                  dtEmp.Rows.Count);
            }
            catch (Exception ex)
            {
               System.Console.WriteLine("Exception: {0}", 
                  ex.ToString());
            }

            objConn.Close();
         }
      }
   }
}
comments powered by Disqus

Featured

Subscribe on YouTube