none
改成codebehind後出現(無法在此範圍宣告名為'e'的區域變數...) RRS feed

  • 問題

  • 請教各位:

    http://cht.gotdotnet.com/quickstart/util/srcview.aspx?path=/quickstart/aspplus/samples/webforms/data/datagrid4.src

    我把上面的寫法改成codebehind

          catch (SqlException e)
          {
            if (e.Number == 2627)
              Message.InnerHtml = "錯誤: 具有相同主索引鍵的資料錄已經存在";
            else
              Message.InnerHtml = "錯誤: 無法加入資料錄,請確定各欄位是否都已正確填入";
            Message.Style["color"] = "red";
          }
    竟出現「無法在此範圍宣告名為'e'的區域變數,因為其可能賦予'e'不同的意義,而該意義已經於'父代或目前'範圍中用來代表不同的意義」
    請問我該怎麼改,謝謝。

        private void btnAddAuthor_Click(object sender, System.EventArgs e)
        {
          if (au_id.Value == "" || au_fname.Value == "" || au_lname.Value == "" || phone.Value == "")
          {
            Message.InnerHtml = "錯誤: 作者 ID、姓名或電話不允許 Null 值";
            Message.Style["color"] = "red";
            BindGrid();
            return;
          }

          String insertCmd = "insert into Authors (au_id, au_lname, au_fname, phone, address, city, state, zip, contract) values (@Id, @LName, @FName, @Phone, @Address, @City, @State, @Zip, @Contract)";

          SqlCommand myCommand = new SqlCommand(insertCmd, myConnection);

          myCommand.Parameters.Add(new SqlParameter("@Id", SqlDbType.NVarChar, 11));
          myCommand.Parameters["@Id"].Value = au_id.Value;

          myCommand.Parameters.Add(new SqlParameter("@LName", SqlDbType.NVarChar, 40));
          myCommand.Parameters["@LName"].Value = au_lname.Value;

          myCommand.Parameters.Add(new SqlParameter("@FName", SqlDbType.NVarChar, 20));
          myCommand.Parameters["@FName"].Value = au_fname.Value;

          myCommand.Parameters.Add(new SqlParameter("@Phone", SqlDbType.NChar, 12));
          myCommand.Parameters["@Phone"].Value = phone.Value;

          myCommand.Parameters.Add(new SqlParameter("@Address", SqlDbType.NVarChar, 40));
          myCommand.Parameters["@Address"].Value = address.Value;

          myCommand.Parameters.Add(new SqlParameter("@City", SqlDbType.NVarChar, 20));
          myCommand.Parameters["@City"].Value = city.Value;

          myCommand.Parameters.Add(new SqlParameter("@State", SqlDbType.NChar, 2));
          myCommand.Parameters["@State"].Value = state.Value;

          myCommand.Parameters.Add(new SqlParameter("@Zip", SqlDbType.NChar, 5));
          myCommand.Parameters["@Zip"].Value = zip.Value;

          myCommand.Parameters.Add(new SqlParameter("@Contract", SqlDbType.NVarChar,1));
          myCommand.Parameters["@Contract"].Value = contract.Value;

          myCommand.Connection.Open();

          try
          {
            myCommand.ExecuteNonQuery();
            Message.InnerHtml = "<b>已加入此資料錄</b><br>" + insertCmd.ToString();
          }
          catch (SqlException e)
          {
            if (e.Number == 2627)
              Message.InnerHtml = "錯誤: 具有相同主索引鍵的資料錄已經存在";
            else
              Message.InnerHtml = "錯誤: 無法加入資料錄,請確定各欄位是否都已正確填入";
            Message.Style["color"] = "red";
          }

          myCommand.Connection.Close();

          BindGrid();

        }

    2006年5月16日 上午 09:22

解答

  • 因為你在程式中重覆宣告了 e(事件常式已經有一個 e 的宣告了).

    把 SqlException e 改成 SqlException ex,就可以解決了 .

    2006年5月16日 上午 10:12
    版主

所有回覆