亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

怎么使用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

乳源| 甘谷县| 都安| 福贡县| 临湘市| 从化市| 乐平市| 民勤县| 射洪县| 镇赉县| 侯马市| 沐川县| 灵武市| 延庆县| 玉山县| 洛隆县| 隆林| 灵台县| 峨边| 延川县| 应用必备| 永和县| 河间市| 勃利县| 定南县| 宁波市| 涿鹿县| 仲巴县| 西平县| 仙居县| 华亭县| 纳雍县| 抚松县| 毕节市| 桃源县| 龙井市| 曲靖市| 辽宁省| 从化市| 中阳县| 上杭县|