日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁西西教程數(shù)據(jù)庫教程 → SQL Server中使用表類型參數(shù)批量添加和修改的存儲過程

      SQL Server中使用表類型參數(shù)批量添加和修改的存儲過程

      相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時間:2012/10/30 11:00:05字體大。A-A+

      作者:西西點擊:266次評論:15次標(biāo)簽: 存儲過程

      摘要:

          最近做項目中遇到批量添加和修改的問題,在老大的指導(dǎo)下學(xué)會了使用表類型參數(shù)來做批量操作。為了鞏固強化,圍繞這個技術(shù)又做了個小demo。

      開始正題:   

          首先,我們在SQL Server 2008下創(chuàng)建一個示例數(shù)據(jù)庫名為TableTypeTest,再在該數(shù)據(jù)庫下創(chuàng)建一個名為Class和Student的表,結(jié)構(gòu)如下:

                    

      再在TableTypeTest數(shù)據(jù)庫下創(chuàng)建一個自定義表類型,取名StudentType,如下:

      CREATE TYPE [dbo].[StudentType] AS TABLE(
          [SID] [int] NOT NULL,
          [CID] [int] NOT NULL,
          [SName] [nvarchar](50) NOT NULL
      )
      GO

      然后,創(chuàng)建兩個存儲過程,批量添加和批量修改,分別為InserNewStudent和UpdateStudent,如下

      InserNewStudent:

      CREATE PROCEDURE [dbo].[InserNewStudent] 
          @Dt dbo.StudentType readonly
      AS
      BEGIN
          insert into dbo.Student(CID,SName) select t.CID,t.SName  from @Dt as t 
      END
      GO

      UpdateStudent:

      啟動Visual Studio 2010,創(chuàng)建一個默認(rèn)的窗體應(yīng)用程序,窗體用于顯示所有班級列表,操作每個班級下的學(xué)生通過選中該班級,然后右鍵操作。如下:

      創(chuàng)建顯示班級下的所有學(xué)生列表窗體,如下:

      創(chuàng)建批量添加學(xué)生的窗體,如下:

      關(guān)鍵代碼如下:

      /// <summary>
               /// 批量添加
               /// </summary>
               public static bool AddBantch(DataTable dt) {
                   string pName = "dbo.InserNewStudent";
                   List<SqlParameter> pList = new List<SqlParameter>() {
                   DbHelper.CreateSqlParemeterStructured("@Dt",dt)
                   };
                   try
                   {
                       DbHelper.RunProcedure(pName, pList);
                       return true;
                   }
                   catch
                   {
                       return false;
                   }
               }

      private void button1_Click(object sender, EventArgs e)
              {
                  if (string.IsNullOrEmpty(this.textBox1.Text) || string.IsNullOrEmpty(this.textBox4.Text) || string.IsNullOrEmpty(this.textBox6.Text))
                  {
                      MessageBox.Show("不能有空文本框");
                  }
                  else {
                      DataTable dt = new DataTable();
                      dt.Columns.Add("SID");
                      dt.Columns.Add("CID");
                      dt.Columns.Add("SName");
                      DataRow dr;
                      dr = dt.NewRow();
                      dr["SID"] = 0;//此列雖然在添加的時候無用,但必須賦值,否則報錯
                      dr["CID"] = CID;
                      dr["SName"] = this.textBox1.Text;
                      dt.Rows.Add(dr);
                      dr = dt.NewRow();
                      dr["SID"] = 0;
                      dr["CID"] = CID;
                      dr["SName"] = this.textBox4.Text;
                      dt.Rows.Add(dr);
                      dr = dt.NewRow();
                      dr["SID"] = 0;
                      dr["CID"] = CID;
                      dr["SName"] = this.textBox6.Text;
                      dt.Rows.Add(dr);
      
                      if (Library.AddBantch(dt))
                      {
                          MessageBox.Show("批量添加成功!");
                          this.Close();
                      }
                      else
                      {
                          MessageBox.Show("批量添加失敗!");
                          this.Close();
                      }
                  }
              }

       創(chuàng)建批量更改班級學(xué)生姓名的窗體,如下:

      關(guān)鍵代碼如下:

      /// <summary>
               /// 批量修改
               /// </summary>
               public static bool UpdateBantch(DataTable dt) {
                   string pName = "dbo.UpdateStudent";
                   List<SqlParameter> pList = new List<SqlParameter>() { 
                   DbHelper.CreateSqlParemeterStructured("@Dt",dt)
                   };
                   try
                   {
                       DbHelper.RunProcedure(pName, pList);
                       return true;
                   }
                   catch 
                   {
                       return false;
                   }
               }

      private void button1_Click(object sender, EventArgs e)
              {
                  int rows = this.dataGridView1.Rows.Count;
                  DataTable dt = new DataTable();
                  dt.Columns.Add("SID");
                  dt.Columns.Add("CID");
                  dt.Columns.Add("SName");
                  DataRow dr;
                  for (int i = 0; i < rows;i++ ) {
                  DataGridViewRow dtr=this.dataGridView1.Rows[i];
                  dr = dt.NewRow();
                  dr["SID"] = dtr.Cells[0].Value;
                  dr["CID"] = dtr.Cells[1].Value;
                  dr["SName"] = dtr.Cells[2].Value;
                  dt.Rows.Add(dr);
                  }
                  if (Library.UpdateBantch(dt))
                  {
                      MessageBox.Show("批量更改成功!");
                  }
                  else {
                      MessageBox.Show("批量更改失。");
                  }
              }

      源碼下載

      PS:數(shù)據(jù)庫連接要在程序中的App.Config中配置

        相關(guān)評論

        閱讀本文后您有什么感想? 已有人給出評價!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評論

        最新評論

        發(fā)表評論 查看所有評論(15)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)