2012-08-28 33 views
0

我试图将一些变量传递给参数化查询,但当值为NULL时,它会引发一个表示未提供该值的异常。使用C#和SQL Server发送NULL值的参数化查询

我该如何解决,如果没有如果或类似的东西?

我的代码是这样的

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(); 
+0

什么是造成麻烦的领域? –

+0

@materno,事情是,当我做没有参数的查询没有问题,但会有些时候,这些参数将为空 – poz2k4444

+0

你应该检查参数是否为!= null之前添加它 –

回答

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空。

+0

谢谢,这是正是我需要的;) – poz2k4444