簡體   English   中英

查詢參數化不能用c#和SQL Server插入值

[英]Query parameterized cannot insert value with c# and SQL Server

我有一個參數化查詢,它工作正常,但當我刪除de DB並再次創建它,具有相同的值和所有內容時,它拋出一個異常,說它不能插入值為NULL的值為sexo,但所有的值都是已分配,這是代碼:

    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());
   } 

我檢查了數據庫,它似乎沒有問題,任何消化?

您可能遇到AddWithValue未正確推斷您的參數類型bit 使用true / false的,而不是1 / 0

cmdPersona_Log.Parameters.AddWithValue("@sexo", true);

確保INSERT子句中列出了應該為非null的表的所有字段

您是否嘗試過使用此表單cmd.Parameters.Add("@SomeID", SqlDbType.Int, 4).Value =您可以在哪里明確SqlDbType?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM