2016-07-07 8 views
0

データベースにインシデントレポートを生成するWebページがあります。インシデントレポートは、車のIDを使用して車のテーブルに結び付けられています。ドロップダウンリストで選択されたインデックスが返されます。

DALで「追加情報:列 'CarID'、表 'RideXpress.dbo.IncidentReport'にNULL値を挿入できません」列にNULLが許可されていません。失敗する。

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

すべてのヘルプを次のを次のように関連するのaspxコードがあります非常に感謝しています。

+1

ReportIdがNULLです。あなたはそれを初期化しておらず、値を割り当てていません。第二に、あなたの挿入ステートメントはそれを含んでおらず、CarIDを含んでいません。 ReportIDはID列ですか? – 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

愚かな質問ですが、どうすればいいですか? (申し訳ありませんが、そのような騒ぎである) –

関連する問題