使用C#和SQL Server发送NULL值的参数化查询

时间:2012-08-28 00:08:43

标签: c# sql

我试图将一些变量传递给参数化查询,但是当值为NULL时,它会抛出一个异常,表示未提供该值。

如果没有if或类似内容,我该如何解决?

我的代码就是这个

var cmdPersona_Log = new SqlCommand();
cmdPersona_Log.Parameters.Clear();
cmdPersona_Log.Connection = mySqlConnection;
cmdPersona_Log.CommandType = CommandType.Text;
cmdPersona_Log.CommandText = @"INSERT INTO [Tomin].[TominRH].[Persona_Log] "
+ "([Id_Action],[Id_User],[Id_Date],[Id_Entidad],[Nombre],[Paterno],[Materno],[Sexo],[Id_Nacionalidad])"
+ " Values (1, 'Admin', @fecha, @id_entidad, @nombre, @paterno, @materno, 1, 52)";

cmdPersona_Log.Parameters.Add("@fecha", DateTime.Now);
cmdPersona_Log.Parameters.Add("@id_entidad", dbRow["CUENTA"]);
cmdPersona_Log.Parameters.Add("@nombre", nombre);
cmdPersona_Log.Parameters.Add("@paterno", paterno);
cmdPersona_Log.Parameters.Add("@materno", materno);

cmdPersona_Log.ExecuteNonQuery();

1 个答案:

答案 0 :(得分:3)

我将假设你的问题是底层字段不支持空值。如果是这种情况,你可以做这样的事情

cmdPersona_Log.Parameters.Add("@nombre", nombre ?? string.Empty);
cmdPersona_Log.Parameters.Add("@paterno", paterno ?? string.Empty); 
cmdPersona_Log.Parameters.Add("@materno", materno ?? string.Empty);

如果使用null-coalescing operator

,您将插入一个空字符串