У меня есть помощник мастера asp.net в моем веб-приложении Я вызываю хранимую процедуру из кода позади, чтобы вставить данные в базу данных. Выполнение proc в SSMS прекрасно работает, и я получил этот блок, чтобы работать один раз раньше и внес изменения (к сожалению, я не могу вспомнить, какие изменения я сделал). Моя проблема заключается в том, что при нажатии следующей кнопки не генерируются ошибки, а также не записываются никакие данные в базу данных. Я протестировал, добавив исключение в блок try cnx2, и исключения были брошены, поэтому я знаю, что код выполняется в том месте, где я хочу, но он все еще не вставлен. Любая помощь приветствуется. Спасибо. И, пожалуйста, если есть какая-либо информация, я могу добавить, что может помочь, дайте мне знатьASP.NET 2.0 C# Вставить в базу данных не работает
protected void onNextButtonClick(object sender, EventArgs e)
{
if (Wizard1.ActiveStepIndex.Equals(1))
{
page1Submit();
}
else if (Wizard1.ActiveStepIndex.Equals(2))
{
page2Submit();
}
else if (Wizard1.ActiveStepIndex.Equals(3))
{
page3Submit();
}
else if (Wizard1.ActiveStepIndex.Equals(8))
{
page8submit();
}
}
protected void page1Submit()
{
string hispanic;
if (cbIsHispanic.Checked)
{
hispanic = "1";
}
else
{
hispanic = "0";
}
bool newReport = true;
SqlConnection cnx = new SqlConnection(server);
SqlCommand cmd = new SqlCommand("[ReportCheckExists]", cnx);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@reportNumber", dReportNumber.Text.ToString());
try
{
cnx.Open();
int rowCount = Convert.ToInt32(cmd.ExecuteScalar());
cnx.Close();
if (rowCount > 0)
{
newReport = false;
}
}
catch (Exception ex)
{
throw new Exception("Error executing MyProcedureName.", ex);
}
if (newReport)
{
SqlConnection cnx2 = new SqlConnection(server);
SqlCommand cmd2 = new SqlCommand("[NewReport]", cnx2);
cmd2.CommandType = CommandType.StoredProcedure;
cmd2.Parameters.AddWithValue("@reportNumber", dReportNumber.Text.ToString());
try
{
cnx.Open();
cmd.ExecuteNonQuery();
cnx.Close();
}
catch (Exception ex)
{
throw new Exception("Error executing MyProcedureName.", ex);
}
}
else
{
string strJavaScript = "<script language = javascript type=text/Javascript> alert('That report number already exists. If you need to modify a report select it from the main menu or enter the report number again.')</script>";
this.Page.RegisterClientScriptBlock("Key4", strJavaScript);
Wizard1.ActiveStepIndex = 0;
}
}
«и исключения были кинули». Если его исключение бросания на cmd.ExectueNonQuery(), то, конечно же, он ничего не собирается вставлять. Какое исключение вы получаете – Habib
Абсолютно не связанный, но замените все с 'string hispanic' на' bool newReport' на 'string hispanic = cbIsHispanic.Checked? «1»: «0»; '. Легко читается и экономит много линий. –
Вы должны добавить инструкции 'using' или, наконец, блоки, чтобы избежать незакрытых соединений, если возникает исключение. – Patrick