2012-05-09 2 views
0

У меня есть помощник мастера 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; 

     } 
    } 
+1

«и исключения были кинули». Если его исключение бросания на cmd.ExectueNonQuery(), то, конечно же, он ничего не собирается вставлять. Какое исключение вы получаете – Habib

+1

Абсолютно не связанный, но замените все с 'string hispanic' на' bool newReport' на 'string hispanic = cbIsHispanic.Checked? «1»: «0»; '. Легко читается и экономит много линий. –

+1

Вы должны добавить инструкции 'using' или, наконец, блоки, чтобы избежать незакрытых соединений, если возникает исключение. – Patrick

ответ

4

Это, вероятно, потому, что вы выполняете команду cmd, а не cmd2 в вашем втором блоке попытка поймать

+0

после нескольких минут сидения с моим боссом, а затем меня, дурача себя молотком за то, что он был глупым, нашел благодарность за ответ. –

+0

lol, np. Примите во внимание, что вы используете ['using'] (http://msdn.microsoft.com/en-us/library/yh598w02.aspx) заявления о своих подключениях и читателях кстати, они очень полезны, и они выглядят довольно – Patrick