Title: Message
I am trying to set a SQL Server text field to null if the string I am putting in is null. 
If I set the properties like this:
 
if (stringText == null)
    loggingEvent.Properties["@textData1"] = System.DBNull.Value;
else
    loggingEvent.Properties["@textData1"] = stringText;
 
An exception is thrown in log4net when it trys to execute the command.  The exception's message is something like "The statement is incorrect".  It works fine if I put an empty string in the property like this:
if (stringText == null)
    loggingEvent.Properties["@textData1"] = string.empty;
else
    loggingEvent.Properties["@textData1"] = stringText;
 
Do I need to use a different layout for the @textdata1 parameter to get this to work?
If so, is there an existing one that will work?
I think what the layout needs to do is put null in the commandtext when the value is null or System.DBNull.Value.
 
Any suggestions?
 
thanks,
Nick
 
<log4net debug="true">
<appender name="DatabaseAppender" type="log4net.Appender.ADONetAppender">
<bufferSize value="1" />
<param name="ConnectionType" value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<commandText value="INSERT INTO [RescueNetLog] ([LogDate], [User],[File],[Message],[LineNumber],[Level],[Type],[Component],[Machine],[Thread],[Function],[Logger],[StringData1],[StringData2],[StringData3],[FloatData1],[FloatData2],[FloatData3],[TextData1]) VALUES (@log_date, @user, @file, @message, @line_number, @level, @type, @component, @machine, @thread, @function, @logger, @stringdata1, @stringdata2, @stringdata3, @floatdata1, @floatdata2, @floatdata3, @textData)" />
<param name="Parameter">
<param name="ParameterName" value="@textdata1" />
<param name="DbType" value="String" />
<param name="Size" value="4000" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@user" />
<param name="DbType" value="String" />
<param name="Size" value="50" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@file" />
<param name="DbType" value="String" />
<param name="Size" value="250" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@message" />
<param name="DbType" value="String" />
<param name="Size" value="3000" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@line_number" />
<param name="DbType" value="String" />
<param name="Size" value="50" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@level" />
<param name="DbType" value="String" />
<param name="Size" value="25" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%p" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@type" />
<param name="DbType" value="String" />
<param name="Size" value="25" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@component" />
<param name="DbType" value="String" />
<param name="Size" value="100" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%a" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@machine" />
<param name="DbType" value="String" />
<param name="Size" value="50" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@thread" />
<param name="DbType" value="String" />
<param name="Size" value="10" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%t" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@log_date" />
<param name="DbType" value="DateTime" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@function" />
<param name="DbType" value="String" />
<param name="Size" value="250" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@logger" />
<param name="DbType" value="String" />
<param name="Size" value="250" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%c" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@stringdata1" />
<param name="DbType" value="String" />
<param name="Size" value="1000" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@stringdata2" />
<param name="DbType" value="String" />
<param name="Size" value="1000" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@stringdata3" />
<param name="DbType" value="String" />
<param name="Size" value="1000" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@floatdata1" />
<param name="DbType" value="Double" />
<param name="Size" value="8" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@floatdata2" />
<param name="DbType" value="Double" />
<param name="Size" value="8" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@floatdata3" />
<param name="DbType" value="Double" />
<param name="Size" value="8" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[EMAIL PROTECTED]" />
</param>
</param>
</appender>
<!-- Level Hierarchy: OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE, VERBOSE, ALL -->
<logger name="zolldata" additivity="false">
<level value="INFO" />
<appender-ref ref="DatabaseAppender" />
</logger>
</log4net>

Reply via email to