久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么使用DataTable作為存儲過程的參數(shù)

129次閱讀
沒有評論

共計 2189 個字符,預(yù)計需要花費 6 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

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

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

如何使用 DataTable 作為存儲過程的參數(shù)

一、測試環(huán)境

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。

二、測試概述

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

三、準(zhǔn)備數(shù)據(jù)

1、建立數(shù)據(jù)庫、表、類型、存儲過程

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)
  )
  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 作為存儲過程的參數(shù)

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

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

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;
  }
  }

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

以上是“怎么使用 DataTable 作為存儲過程的參數(shù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!

向 AI 問一下細(xì)節(jié)

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-12-04發(fā)表,共計2189字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 博乐市| 岳阳市| 贡觉县| 巴东县| 故城县| 嘉黎县| 深圳市| 昭苏县| 沙湾县| 祁阳县| 沅江市| 九江县| 安阳市| 肇州县| 乐至县| 密山市| 健康| 那坡县| 青田县| 房产| 绥中县| 平顺县| 大城县| 五常市| 原阳县| 三亚市| 班戈县| 彩票| 牡丹江市| 伊吾县| 临西县| 涪陵区| 巴中市| 渭源县| 安平县| 兴海县| 小金县| 万载县| 吉木萨尔县| 东乌珠穆沁旗| 资兴市|