我有一个参数化查询,它工作正常,但是当我删除de DB并再次创建它时,使用相同的值和所有内容,它会抛出一个异常,表示它不能使用值sexo插入值NULL,但所有分配了值,这里是代码:
try{
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, @sexo, 52)";
cmdPersona_Log.Parameters.AddWithValue("@fecha", DateTime.Now);
cmdPersona_Log.Parameters.AddWithValue("@id_entidad", dbRow["CUENTA"].ToString().Trim());
cmdPersona_Log.Parameters.AddWithValue("@nombre", nombre ?? string.Empty);
cmdPersona_Log.Parameters.AddWithValue("@paterno", paterno ?? string.Empty);
cmdPersona_Log.Parameters.AddWithValue("@materno", materno ?? string.Empty);
cmdPersona_Log.Parameters.AddWithValue("@sexo", 1);
cmdPersona_Log.ExecuteNonQuery();
}
catch(Exception e)
{
MessageBox.Show(dbRow["CUENTA"] + " Persona_log " + e.ToString());
}
我已经检查了数据库,它似乎不是问题,任何消化?
答案 0 :(得分:2)
您可能遇到AddWithValue
未正确推断参数类型bit
的情况。使用true
/ false
代替1
/ 0
:
cmdPersona_Log.Parameters.AddWithValue("@sexo", true);
答案 1 :(得分:0)
确保INSERT子句中列出了应该为非null的表的所有字段
答案 2 :(得分:0)
您是否尝试过使用此表单?
cmd.Parameters.Add("@SomeID", SqlDbType.Int, 4).Value =
你可以在哪里明确SqlDbType?