Steve
Steve

Reputation: 1058

Pass Oracle ClientID in C#

I am trying to use the Oracle connection ClientID but I am getting an error msg and I just can't figure out why. Could you please put me on the correct path.

cnDB.ConnectionString = OracleDatabase.CnnString();            
            cnDB.Open();
            cnDB.ClientId = "SomeUser";             

            cmd.CommandType = CommandType.Text;
            cmd.CommandText=strSQL;
            cmd.Connection = cnDB;

Error   23  'System.Data.OracleClient.OracleConnection' does not contain
a definition for 'ClientId' and no extension method 'ClientId'
accepting a first argument of type
'System.Data.OracleClient.OracleConnection' could be found (are you
missing a using directive or an assembly reference?)

EDIT: Looks like ODP.NET is already used. I am taking over someones code, maybe you can tell me what's wrong here:

using System;
using System.Data;
using System.Configuration;
using System.Data.OracleClient;

public sealed class OracleDatabase
{
    public static DataTable AllData;
    public const string cnstCnnStrSeparator = ";";

    public static String CnnString()
    {

        System.Configuration.AppSettingsReader configurationAppSettings = new System.Configuration.AppSettingsReader();
        String strKeyVal;
        strKeyVal = ConfigurationManager.ConnectionStrings["SecOracle"].ToString();
        return strKeyVal;
    }

    public static DataTable GetDataTable(string strSQL,bool ConvertToString)
    {
        OracleConnection cnDB = new  OracleConnection();  
        OracleCommand cmd = new OracleCommand();
        DataTable dt = new DataTable();
        OracleDataAdapter da = new OracleDataAdapter();       

        try
        {

            cnDB.ConnectionString = OracleDatabase.CnnString();            
            cnDB.Open();
          //  cnDB.ClientId = "SomeUser";             

            cmd.CommandType = CommandType.Text;
            cmd.CommandText=strSQL;
            cmd.Connection = cnDB;             
            da.SelectCommand = cmd;   
            da.Fill(dt);

            DataTable dt1 = dt.Clone();
            if (ConvertToString)
            {

                for (int j = 0; j < dt1.Columns.Count; j++)
                {
                    dt1.Columns[j].DataType = typeof(string);
                }
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    DataRow dr1 = dt1.NewRow();
                    dt1.Rows.Add(dr1);

                }

                for (int i = 0; i < dt.Rows.Count; i++)
                {


                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        dt1.Rows[i][j] = dt.Rows[i][j].ToString();

                    }

                }

                dt = null;
                AllData = dt1.Copy();
                return dt1;
            }
            else
            {
                dt1 = null;
                AllData = dt.Copy();
                return dt;
            }

        }
        catch (Exception ex)
        {

            return null;
        }
        finally
        {
            cnDB.Close();
        }


    }



    public static OracleDataReader GetDataReader(String SQL)
    {

        OracleCommand cmdQuery;
        OracleDataReader dr;
        String str;
        str = CnnString();
        OracleConnection cnDB = new OracleConnection(str);

        cmdQuery = new OracleCommand();
        try
        {

            cmdQuery.Connection = cnDB;
            cmdQuery.CommandText = SQL;
            cmdQuery.CommandType = System.Data.CommandType.Text;
            cnDB.Open();
            dr = cmdQuery.ExecuteReader(CommandBehavior.CloseConnection);

            return dr;
        }
        catch (Exception ex)
        {

            cnDB.Close();
            return null;
        }

        //'

    }

    public static int Execute(String SQL)
    {

        int lngRecords;
        OracleCommand cmdQuery;
        OracleConnection cnDB = null;
        cmdQuery = new OracleCommand();
        try
        {
            cnDB = new OracleConnection(CnnString());
            cmdQuery.Connection = cnDB;
            cmdQuery.CommandText = SQL;
            cmdQuery.CommandType = System.Data.CommandType.Text;
            cnDB.Open();
            lngRecords = cmdQuery.ExecuteNonQuery();

        }
        catch (Exception ex)
        {

            lngRecords = -1;
        }
        finally
        {
            cnDB.Close();

        }

        return lngRecords;
    }





}

Upvotes: 1

Views: 1180

Answers (1)

Steve
Steve

Reputation: 216303

I suppose you are using the Microsoft System.Data.OracleClient namespace and, as the error message says, there is no ClientID property for the connection.

You should use the Oracle Data Provider from Oracle and from a specific version forward as you can read from this thread on the OTN Discussion Forum

ClientID was added to ODP in 10.2.0.1. Yes, you can use 10.2.x ODP and 11g ODP against a 9.x database (assuming thats why you installed that version).

Upvotes: 3

Related Questions