佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > 將DataTable作為存儲(chǔ)過程參數(shù)的用法實(shí)例詳解

將DataTable作為存儲(chǔ)過程參數(shù)的用法實(shí)例詳解

熱門標(biāo)簽:Linux服務(wù)器 網(wǎng)站排名優(yōu)化 鐵路電話系統(tǒng) AI電銷 服務(wù)外包 呼叫中心市場需求 地方門戶網(wǎng)站 百度競價(jià)排名
最近工作中寫了幾個(gè)存儲(chǔ)過程,需要向存儲(chǔ)過程中傳遞字符串,因?yàn)镾QL Server 2000中沒有內(nèi)置類似于 split 的函數(shù),只好自己處理,將前臺(tái)數(shù)據(jù)集中的一列用逗號(hào)拆分存到一個(gè)Liststring>中,再轉(zhuǎn)化為字符串傳給存儲(chǔ)過程,很是麻煩。今天看了下SQL Server 2008的新特性,發(fā)現(xiàn)有表變量的使用,及其將DataTable作為參數(shù)的用法,就嘗試了一下,簡單談?wù)勑牡谩?
示例代碼下載

一、測(cè)試環(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。
二、測(cè)試概述
測(cè)試項(xiàng)目很簡單,就是添加新用戶
 
三、準(zhǔn)備數(shù)據(jù)
1、建立數(shù)據(jù)庫、表、類型、存儲(chǔ)過程
復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

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

前臺(tái)搭建好表單,后臺(tái)主要是一個(gè)函數(shù):
復(fù)制代碼 代碼如下:

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);
10
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
}
catch (Exception ex)
{
throw ex;
}
}

點(diǎn)擊【添加】按鈕時(shí)調(diào)用存儲(chǔ)過程。測(cè)試是完成了
您可能感興趣的文章:
  • 比較2個(gè)datatable內(nèi)容是否相同的方法
  • datatable生成excel和excel插入圖片示例詳解
  • c#將list類型轉(zhuǎn)換成DataTable方法示例
  • 多個(gè)jquery.datatable共存,checkbox全選異常的快速解決方法
  • DataTables List互相轉(zhuǎn)換的實(shí)現(xiàn)類示例
  • 使用DataTable.Select 方法時(shí),特殊字符的轉(zhuǎn)義方法分享
  • ASP.NET中DataTable與DataSet之間的轉(zhuǎn)換示例
  • 多個(gè)datatable共存造成多個(gè)表格的checkbox都被選中
  • datatable行轉(zhuǎn)列示例分享

標(biāo)簽:銅川 仙桃 崇左 湘潭 黃山 衡水 湖南 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《將DataTable作為存儲(chǔ)過程參數(shù)的用法實(shí)例詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    双流县| 曲靖市| 法库县| 德保县| 瓮安县| 蒙阴县| 绍兴市| 黄浦区| 溧水县| 扎鲁特旗| 太原市| 大洼县| 昌江| 邛崃市| 彰武县| 西和县| 巴马| 玉环县| 天镇县| 鹤岗市| 米林县| 瑞安市| 黔西县| 行唐县| 松江区| 闵行区| 芜湖县| 克山县| 莆田市| 来安县| 平度市| 郯城县| 横峰县| 九江县| 汤原县| 金塔县| 阿坝县| 武城县| 定结县| 青冈县| 文昌市|