中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-03-10 11:06:01 來源:億速云 閱讀:232 作者:小新 欄目:數據庫

小編給大家分享一下怎么使用DataTable作為存儲過程的參數,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

  因為SQL Server 2000中沒有內置類似于 split 的函數,只好自己處理,將前臺數據集中的一列用逗號拆分存到一個List中,再轉化為字符串傳給存儲過程,很是麻煩。下面億速云小編來講解下如何使用DataTable作為存儲過程的參數?

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

  一、測試環境

  1、Windows Server 2008 R2 DataCenter

  2、Visual Studio 2008 Team System With SP1

  3、SQL Server 2008 Enterprise Edition With SP1

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

  二、測試概述

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

  三、準備數據

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

IF NOT EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID('Users') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
   BEGIN
   CREATE TABLE dbo.Users
                                                                                                                                                                                                (
   UserID INT IDENTITY(-1, -1) NOT NULL,
   UserName VARCHAR(20) NOT NULL,
   UserPass VARCHAR(20) NOT NULL,
   Sex BIT NULL,
  Age SMALLINT NULL,
   CONSTRAINT PK_Users_UserID PRIMARY KEY(UserID)
   )
  END
   IF NOT EXISTS(SELECT * FROM sys.table_types WHERE name = 'UserTable' AND is_user_defined = 1)
   BEGIN
   CREATE TYPE UserTable AS TABLE
  (
   UserName VARCHAR(20) NOT NULL,
   UserPass VARCHAR(20) NOT NULL,
   Sex BIT NULL,
   Age SMALLINT NULL
   )
   END
   GO

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

IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID('sp_InsertSingleUser') AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
                                                                      BEGIN
   DROP PROCEDURE dbo.sp_InsertSingleUser
  END
   GO
   CREATE PROCEDURE dbo.sp_InsertSingleUser
   (
   @User UserTable READONLY
   )
   AS
  
   SET XACT_ABORT ON
   BEGIN TRANSACTION
  
   INSERT INTO dbo.Users(UserName, UserPass, Sex, Age)
   SELECT UserName, UserPass, Sex, Age FROM @User
  
   COMMIT TRANSACTION
   SET XACT_ABORT OFF
   GO

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

public void fnInsertSingleUser(DataTable v_dt)
   {
   try
   {
   SqlConnection cn = new SqlConnection(CONN);
   SqlCommand cmd = cn.CreateCommand();
   cmd.CommandType = CommandType.StoredProcedure;
   cmd.CommandText = @"sp_InsertSingleUser";
   SqlParameter p = cmd.Parameters.AddWithValue("@User", v_dt);
  
   DataSet ds = new DataSet();
   SqlDataAdapter da = new SqlDataAdapter(cmd);
   da.Fill(ds);
   }
   catch (Exception ex)
   {
   throw ex;
   }
   }

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

以上是“怎么使用DataTable作為存儲過程的參數”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新平| 保德县| 广水市| 平谷区| 当涂县| 昭通市| 休宁县| 广西| 莱州市| 奈曼旗| 庆城县| 浦东新区| 福泉市| 侯马市| 同江市| 疏附县| 平潭县| 枣庄市| 周宁县| 孟津县| 元谋县| 尚志市| 鱼台县| 马龙县| 泸定县| 峨眉山市| 泊头市| 凌海市| 西丰县| 秦皇岛市| 南昌县| 奉新县| 红桥区| 徐闻县| 巢湖市| 墨竹工卡县| 云浮市| 顺义区| 乳山市| 汉沽区| 扶余县|