<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      使用DataTable作為存儲過程的參數

        最近工作中寫了幾個存儲過程,需要向存儲過程中傳遞字符串,因為SQL Server 2000中沒有內置類似于 split 的函數,只好自己處理,將前臺數據集中的一列用逗號拆分存到一個List<string>中,再轉化為字符串傳給存儲過程,很是麻煩。今天看了下SQL Server 2008的新特性,發現有表變量的使用,及其將DataTable作為參數的用法,就嘗試了一下,簡單談談心得。

       示例代碼下載

       

      一、測試環境

      1Windows Server 2008 R2 DataCenter

      2Visual Studio 2008 Team System With SP1

      3SQL Server 2008 Enterprise Edition With SP1

      由于是SQL Server 2008新特性,所以只能用2008

       

       二、測試概述

      測試項目很簡單,就是添加新用戶

       

       

      三、準備數據

      1、建立數據庫、表、類型、存儲過程

        

      代碼
       1 IF NOT EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID('Users'AND OBJECTPROPERTY(id, N'IsUserTable'= 1)
       2 BEGIN
       3  CREATE TABLE dbo.Users
       4  (
       5   UserID INT IDENTITY(-1-1NOT NULL,
       6   UserName VARCHAR(20NOT NULL,
       7   UserPass VARCHAR(20NOT NULL,
       8   Sex BIT NULL,
       9   Age SMALLINT NULL,
      10   CONSTRAINT PK_Users_UserID PRIMARY KEY(UserID)
      11  )
      12 END
      13 IF NOT EXISTS(SELECT * FROM sys.table_types WHERE name = 'UserTable' AND is_user_defined = 1)
      14 BEGIN
      15  CREATE TYPE UserTable AS TABLE
      16  (
      17   UserName VARCHAR(20NOT NULL,
      18   UserPass VARCHAR(20NOT NULL,
      19   Sex BIT NULL,
      20   Age SMALLINT NULL
      21  )
      22 END
      23 GO
      24 
      代碼
       1 IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID('sp_InsertSingleUser'AND OBJECTPROPERTY(id, N'IsProcedure'= 1)
       2 BEGIN
       3     DROP PROCEDURE dbo.sp_InsertSingleUser
       4 END
       5 GO
       6 CREATE PROCEDURE dbo.sp_InsertSingleUser
       7 (
       8     @User UserTable READONLY
       9 )
      10 AS
      11 
      12 SET XACT_ABORT ON
      13 BEGIN TRANSACTION
      14 
      15 INSERT INTO dbo.Users(UserName, UserPass, Sex, Age)
      16 SELECT UserName, UserPass, Sex, Age FROM @User
      17 
      18 COMMIT TRANSACTION
      19 SET XACT_ABORT OFF
      20 GO

       

      前臺搭建好表單,后臺主要是一個函數:

      代碼
       1     public void fnInsertSingleUser(DataTable v_dt)
       2     {
       3         try
       4         {
       5             SqlConnection cn = new SqlConnection(CONN);
       6             SqlCommand cmd = cn.CreateCommand();
       7             cmd.CommandType = CommandType.StoredProcedure;
       8             cmd.CommandText = @"sp_InsertSingleUser";
       9             SqlParameter p = cmd.Parameters.AddWithValue("@User", v_dt);
      10 
      11             DataSet ds = new DataSet();
      12             SqlDataAdapter da = new SqlDataAdapter(cmd);
      13             da.Fill(ds);
      14         }
      15         catch (Exception ex)
      16         {
      17             throw ex;
      18         }
      19     }

       

       

        點擊【添加】按鈕時調用存儲過程。測試是完成了,也很簡單,傳遞一個DataTable做參數確實很方便吧,能夠輕松完成原先需要很多編碼的工作。關于表變量還是有些道道的,如創建時判斷其是否存在的語句,刪除表變量前需要先刪除引用表變量的存儲過程等。一般開發我大多會選擇用臨時表,處理起來比較方便,表變量可以作為存儲過程參數確實是一個獨特的優勢,希望在SQL Server的未來版本中能夠繼續增強對表變量和臨時表的支持,尤其是早日支持臨時表調試:)

      posted @ 2010-01-24 21:45  江蘇瑞步科技  閱讀(1490)  評論(4)    收藏  舉報
      主站蜘蛛池模板: 好吊视频一区二区三区人妖| 成在人线av无码免费看网站直播 | 国产精品www夜色视频| 欧美成人精品手机在线| 亚洲精品久久无码av片软件| 亚洲一区二区三区人妻天堂| 内射干少妇亚洲69XXX| 亚洲十八禁一区二区三区| 久久亚洲欧美日本精品| 五月天国产成人av免费观看| 国产精品理论片| 亚洲精品一区二区三区大| 国产精品成人中文字幕| 在国产线视频A在线视频| 丁香婷婷综合激情五月色| 国产WW久久久久久久久久| 日韩卡一卡2卡3卡4卡| 免费人成视频在线观看网站| 成人看的污污超级黄网站免费| 精品成人免费自拍视频| 国产99视频精品免费视频36| 国产精品人妇一区二区三区| 亚洲国产精品久久久天堂麻豆宅男| 久久一级精品久熟女人妻| 国产亚洲精品视频一二区| 国产无遮挡裸体免费视频在线观看| 丰满熟妇乱又伦在线无码视频 | 精品乱人伦一区二区三区| 日韩在线一区二区每天更新 | 亚洲av无码一区二区三区网站| 国产成人高清亚洲综合| 狼人大伊人久久一区二区| 少妇人妻偷人免费观看| 亚洲韩国精品无码一区二区三区 | 双乳奶水饱满少妇呻吟免费看| 国产精品美女www爽爽爽视频| 久久99精品久久久学生| 福利视频一区二区在线| 国产亚洲精品成人av在线| 欧美精品在线观看| 视频一区视频二区卡通动漫|