2016-07-07 28 views
0

我有一個網頁在數據庫中生成事件報告。事故報告使用汽車ID綁定到汽車桌上。下拉列表選定的索引返回null

當我點擊提交按鈕時,我在DAL中得到一個錯誤信息:「附加信息:無法將NULL值插入列'CarID',表'RideXpress.dbo.IncidentReport';列不允許空值INSERT失敗「。

相關的aspx代碼如下

<asp:DropDownList ID="DD1" runat="server" CssClass="form-control" AutoPostBack="true" ></asp:DropDownList> 

隱藏文件相關的代碼如下

string connectionString = ConfigurationManager.ConnectionStrings["RideXpressConnectionString"].ToString(); 
      ReportBLL ReportBL = new ReportBLL(connectionString); 
      ReportViewModel report = new ReportViewModel(); 
      int ID = DD1.SelectedIndex; 
      report.CarID = ID; 
      report.DateOfIncident = Convert.ToDateTime(Date.Text); 
      report.ReportName = Name.Text; 
      report.ReportDescription = Description.Text; 
      report.DateOfReport = DateTime.Today; 
      ReportBL.AddReport(report); 
      Response.Redirect("~/Reports.aspx"); 

和DAL,其中提出的錯誤如下

public int AddReport(ReportViewModel add) 
    { 
     string sqlQuery = "INSERT INTO IncidentReport(DateOfIncident, ReportName, ReportDescription, DateOfReport)" + 
      "Values (@DateOfIncident, @ReportName, @ReportDescription, @DateOfReport)"; 
     using (SqlConnection con = new SqlConnection(_connectionString)) 
     using (SqlCommand cmd = new SqlCommand (sqlQuery, con)) 
     { 
      con.Open(); 
      cmd.Parameters.Add("@ReportID", SqlDbType.Int).Value = add.ReportID; 
      cmd.Parameters.Add("@CarID", SqlDbType.Int).Value = add.CarID; 
      cmd.Parameters.Add("@DateOfIncident", SqlDbType.DateTime).Value = add.DateOfIncident; 
      cmd.Parameters.Add("@ReportName", SqlDbType.VarChar).Value = add.ReportName; 
      cmd.Parameters.Add("@ReportDescription", SqlDbType.VarChar).Value = add.ReportDescription; 
      cmd.Parameters.Add("@DateOfReport", SqlDbType.DateTime).Value = add.DateOfReport; 
      return cmd.ExecuteNonQuery(); 
     } 
    } 

任何幫助將非常感激。

+1

您的ReportId爲NULL。您尚未初始化或爲其分配值。其次,你的插入語句不包括它,也不包括CarID。 ReportID是標識列嗎? – Kami

回答

0

更改查詢

string sqlQuery = "INSERT INTO IncidentReport(CarID,DateOfIncident, ReportName, ReportDescription, DateOfReport)" + 
     "Values (@CarID,@DateOfIncident, @ReportName, @ReportDescription, @DateOfReport)"; 

而且ReportId不在查詢,以便它不會被置,要麼將其添加到查詢像我一樣carID以上,或者如果它是身份自動增量不設置它。

+0

非常感謝!我一直在撞牆45分鐘,只是爲了這個小小的錯誤。 reportID是身份自動增量 –

+0

不要忘記標記爲答案。 –

+0

愚蠢的問題,但我該怎麼做? (對不起,這樣的小白) –