Reputation: 1058
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
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