У меня есть веб-страница, которая генерирует отчет об инциденте в базе данных. Отчет об инциденте привязан к таблице автомобилей с использованием идентификатора автомобиля.
Когда я нажимаю кнопку отправки, я получаю сообщение об ошибке в 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 ответ
Измените запрос на
string sqlQuery = "INSERT INTO IncidentReport(CarID,DateOfIncident, ReportName, ReportDescription, DateOfReport)" +
"Values (@CarID,@DateOfIncident, @ReportName, @ReportDescription, @DateOfReport)";
Также ReportId отсутствует в запросе, поэтому он не будет установлен, либо добавьте его в запрос, как я сделал выше carID, либо, если это автоматическое приращение идентификатора, не устанавливайте его вообще.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.