<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      ASP.NET中使用數據處理插入數據注意的問題

      [摘要]很多時候,我們都會習慣將數據庫連接的初始化過程交給Page_Load去做,其實這樣子有好處也有壞處,好處是單邊問題的時候,這種方法很實用,壞處就是遇到多邊的問題時,就種情況這不太好用了!例如下面的例子:/// For Example:<script language="C#&quo...

          很多時候,我們都會習慣將數據庫連接的初始化過程交給Page_Load去做,其實這樣子有好處也有壞處,好處是單邊問題的時候,這種方法很實用,壞處就是遇到多邊的問題時,就種情況這不太好用了!例如下面的例子:

      /// For Example:

      <script language="C#" runat="server">
      SqlConnection mySqlCon;
      protected void Page_Load(Object Src,EventArgs E)
      {
      mySqlCon=new SqlConnection("server=localhost;uid=sa;pwd=sa;database=pubs"); //初始化過程
      if (!IsPostBack)
      BindGrid();
      }
      public void AddPublisher(Object sender, EventArgs E)
       {
      String myinsertCmd = "insert into publishers ( pub_id, pub_name, city, state, country ) values (@pubid,@pubname,@city,@state,@country)";
      SqlCommand mySqlCom = new SqlCommand(myinsertCmd, mySqlCon);  //初始化命令調用
      //實現配套
      mySqlCom.Parameters.Add(new SqlParameter("@pubid", SqlDbType.Char, 4));
      mySqlCom.Parameters["@pubid"].Value = Pub_Id.Text;
      mySqlCom.Parameters.Add(new SqlParameter("@pubname", SqlDbType.VarChar, 40));
      mySqlCom.Parameters["@pubname"].Value = Pub_Name.Text;
      mySqlCom.Parameters.Add(new SqlParameter("@city", SqlDbType.VarChar, 20));
      mySqlCom.Parameters["@city"].Value = City.Text;
      mySqlCom.Parameters.Add(new SqlParameter("@state", SqlDbType.Char, 2));
      mySqlCom.Parameters["@state"].Value = State.Text;
      mySqlCom.Parameters.Add(new SqlParameter("@country",SqlDbType.VarChar, 30));
      mySqlCom.Parameters["@country"].Value = Country.Text;
      //打開DB
      mySqlCom.Connection.Open();
      mySqlCom.ExecuteNonQuery();
      Message.InnerHtml = "<b>已添加記錄</b><br/>";
      mySqlCom.Connection.Close();
      Pub_Id.Text = "";
      Pub_Name.Text = "";
      City.Text= "";
      State.Text = "";
      Country.Text = "";
      BindGrid();
      }
      //子函數調用
      public void BindGrid()
      {
      SqlDataAdapter mySqlCom = new SqlDataAdapter("select * from publishers where pub_id like '99%'", mySqlCon);
      DataSet myds = new DataSet();
      mySqlCom.Fill(myds, "publishers");
      dgMyGrid.DataSource = myds.Tables["publishers"].DefaultView; dgMyGrid.DataBind();
      }
      </script>
      <h2>添加一個新的發行者:</h2>
      <br/>
      發行者 ID 應以 99 打頭,并包含 4 位數字<br/>
      發行者 ID:&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
      <asp:textbox id="Pub_Id" runat="server" />姓名:&nbsp;&nbsp;
      <asp:textbox id="Pub_Name" runat="server" />
      城市:&nbsp;
      <asp:textbox id="City" runat="server" />
      <br/>
      。&nbsp;
      <asp:textbox id="State" runat="server" />
      國家:&nbsp;
      <asp:textbox id="Country" runat="server" />
      <br/>
      <br/>
      &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      <asp:button Text="提交" OnClick="AddPublisher" runat="server" ID="Button1" /><br/>
      <span id="Message" runat="server" />
      <br/>
      <asp:DataGrid id="dgMyGrid" runat="server" />

      這樣的例子初初看起來沒有問題,調試也沒報錯,但在生成的頁面添加數據后提交時就會報錯,說什么屬性不配套之類的話。是什么原因造成的呢!其實,這就是初始化過程在頁面裝載時造成的,但這里有個問題我始終沒能搞清楚,就是既然是在頁面初始化過程已經初始化過DB實例了,按道理來講應該可以直接生成套用的啊,但好像沒有!還是要把初始化過程放到具體的函數里面才能實現!看下面:
      <<script language="C#" runat="server">
        
         protected void Page_Load(Object Src,EventArgs E)
         {
         //頁面裝載過程中直接使用IF語句,其實什么也不加!
         if (!IsPostBack)
         BindGrid();
         }  
         public void AddPublisher(Object sender, EventArgs E)
          {
         string strprovider="server=localhost;uid=sa;pwd=sa;database=pubs"; //構造初始化過程
         SqlConnection mySqlCon=new SqlConnection(strprovider);
         string myinsertCmd ="insert into publishers ( pub_id, pub_name, city, state, country ) values (@pubid,@pubname,@city,@state,@country)";
         SqlCommand mySqlCom = new SqlCommand(myinsertCmd,mySqlCon);   //初始化過程實現
         mySqlCom.Parameters.Add(new SqlParameter("@pubid", SqlDbType.Char, 4));
         mySqlCom.Parameters["@pubid"].Value = Pub_Id.Text;
         mySqlCom.Parameters.Add(new SqlParameter("@pubname", SqlDbType.VarChar, 40));
         mySqlCom.Parameters["@pubname"].Value = Pub_Name.Text;
         mySqlCom.Parameters.Add(new SqlParameter("@city", SqlDbType.VarChar, 20));
         mySqlCom.Parameters["@city"].Value = City.Text;
         mySqlCom.Parameters.Add(new SqlParameter("@state", SqlDbType.Char, 2));
         mySqlCom.Parameters["@state"].Value = State.Text;
         mySqlCom.Parameters.Add(new SqlParameter("@country",SqlDbType.VarChar, 30));
         mySqlCom.Parameters["@country"].Value = Country.Text;
         mySqlCom.Connection.Open();
         mySqlCom.ExecuteNonQuery();
         Message.InnerHtml = "<b>已添加記錄</b><br>";
         mySqlCom.Connection.Close();
         Pub_Id.Text = "";
         Pub_Name.Text = "";
         City.Text= "";
         State.Text = "";
         Country.Text = "";
         BindGrid();
         }
          public void BindGrid()  子函數調用時同樣也要初始化DB連接
          {
          string strprovider="server=dev;uid=sa;pwd=pauperboyboy;database=pubs";
          SqlConnection mySqlCon=new SqlConnection(strprovider);
          SqlDataAdapter mySqlCom = new SqlDataAdapter("select * from publishers where pub_id like '99%'",mySqlCon);
          DataSet myds = new DataSet();
          mySqlCom.Fill(myds, "publishers");
          dgMyGrid.DataSource = myds.Tables["publishers"].DefaultView;
          dgMyGrid.DataBind();
          }
         </script>
         <h2>添加一個新的發行者:</h2>
         <br>
         發行者 ID 應以 99 打頭,并包含 4 位數字<br>
         發行者 ID:&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
         <asp:textbox id="Pub_Id" runat="server" />姓名:&nbsp;&nbsp;
         <asp:textbox id="Pub_Name" runat="server" />
         城市:&nbsp;
         <asp:textbox id="City" runat="server" />
         <br>
         。&nbsp;
         <asp:textbox id="State" runat="server" />
         國家:&nbsp;
         <asp:textbox id="Country" runat="server" />
         <br>
         <br>
         &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
         <asp:button Text="提交" OnClick="AddPublisher" runat="server" ID="Button1" /><br>
         <span id="Message" runat="server" />
         <br>
         <asp:DataGrid id="dgMyGrid" runat="server" />
        </form>>

      經過這樣修改后,我們才能在真正意義上實現數據的增加!但我也試了數據的刪除和更新,在頁面裝載時直接賦于其初始化DB屬性卻沒有問題,不知道是什么原因,知道的人給提個醒哦!謝謝 :)




      日韩精品一区二区三区高清