Hello once more!
Here is my code sample to create and add a parameter to the parameters
collection supporting several database models.
This function works quite good, but I don't like the way, how I create an
output parameter due to specifying a default return data type
(varchar(1000)).
For input parameters I use AddWithValue to support all input data types, but
how can I create an output parameter with a data type set by the stored
procedure itself?
Does anyone has any tips for me to improve following function?
public IDataParameter CreateParameter(IDataParameterCollection coll, string
name, object value)
{
try
{
IDataParameter par = null;
if (coll is OracleParameterCollection)
{
if (value == null)
{
par = new OracleParameter(name, OracleType.VarChar, 1000);
coll.Add(par);
}
else
par = ((OracleParameterCollection)coll).AddWithValue(name, value);
}
else if (coll is SqlParameterCollection)
{
if (value == null)
{
par = new SqlParameter(name, SqlDbType.VarChar, 1000);
coll.Add(par);
}
else
par = ((SqlParameterCollection)coll).AddWithValue("@" + name, value);
}
else if (coll is OdbcParameterCollection)
{
if (value == null)
{
par = new OdbcParameter(name, OdbcType.VarChar, 1000);
coll.Add(par);
}
else
par = ((OdbcParameterCollection)coll).AddWithValue("@" + name, value);
}
else if (coll is OleDbParameterCollection)
{
if (value == null)
{
par = new OleDbParameter(name, OleDbType.VarChar, 1000);
coll.Add(par);
}
else
par = ((OleDbParameterCollection)coll).AddWithValue("@" + name, value);
}
else
throw new DataException("Unknown connection type!");
if (value == null)
par.Direction = ParameterDirection.Output;
else
par.Direction = ParameterDirection.Input;
return par;
}
catch
{
throw ex;
}
}
Regards,
Norbert