Using DBNull for Strings, Dates and Numbers
Posted: Fri 23 Jun 2006 22:34
I'm getting the illegal name/number problem on an INSERT statement. I think i've track it down to where I insert a null value for one of my parameters.
I was wondering what the correct format of using DBNull for identifying the parameter.
ConvertType checks my parameter type and figures out the equivalent type to use in Oracle. For instance, if my paramter is a VarChar and since I'm not using multibyte - i return OracleDBType.VarChar
IsEmpty checks if my parameter is null, and if it is, I try setting the new parameter I'm creating to DbNull. Still getting some problems though...
Do I also need to do that IsNullable every time?
any ideas?
I was wondering what the correct format of using DBNull for identifying the parameter.
Code: Select all
private OracleCommand CreateCommand(String szQuery, Parameter[] aParameters)
{
OracleParameter l_oOracleParameter;
OracleCommand l_oOracleCommand = new OracleCommand(szQuery, m_oOracleConnection, m_oOracleTransaction);
l_oOracleCommand.CommandType = CommandType.Text;
for (int i = 0; i < aParameters.Length; i++)
{
l_oOracleParameter = new OracleParameter(":" + aParameters[i].Name, ConvertType(aParameters[i]), aParameters[i].Size);
l_oOracleParameter.Direction = ParameterDirection.Input;
if (aParameters[i].Data is DateTime &&
aParameters[i].Data.Equals(DateTime.MaxValue))
{
l_oOracleParameter.Value = DBNull.Value;
}
else
{
if (IsEmptyData(aParameters[i]))
{
l_oOracleParameter.IsNullable = true;
l_oOracleParameter.Value = DBNull.Value;
}
else
l_oOracleParameter.Value = aParameters[i].Data;
}
l_oOracleCommand.Parameters.Add(l_oOracleParameter);
log.Warn("'" + l_oOracleParameter.Value + "'");
}
return l_oOracleCommand;
}
IsEmpty checks if my parameter is null, and if it is, I try setting the new parameter I'm creating to DbNull. Still getting some problems though...
Do I also need to do that IsNullable every time?
any ideas?