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

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

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)劍河免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

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

如何使用DataTable作為存儲(chǔ)過程的參數(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。

二、測試概述

測試項(xiàng)目很簡單,就是添加新用戶

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

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

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

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

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

網(wǎng)站標(biāo)題:怎么使用DataTable作為存儲(chǔ)過程的參數(shù)
網(wǎng)頁路徑:http://muchs.cn/article30/pdghso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站改版網(wǎng)站建設(shè)網(wǎng)站內(nèi)鏈、電子商務(wù)、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)