DataTable 을 저장 프로 세 스 매개 변수 로 사용 하 는 인 스 턴 스 상세 설명

최근 작업 중 에 몇 개의 저장 과정 을 썼 습 니 다.저장 과정 에서 문자열 을 전달 해 야 합 니 다.SQL Server 2000 에 split 와 유사 한 함수 가 내장 되 어 있 지 않 기 때문에 스스로 처리 할 수 밖 에 없습니다.프론트 데이터 가 집 중 된 열 을 쉼표 로 나 누 어 하나의 List 에 저장 한 다음 에 문자열 로 저장 과정 에 전달 하 는 것 은 매우 번 거 롭 습 니 다.오늘 SQL Server 2008 의 새로운 특성 을 살 펴 보 니 표 변수의 사용 과 DataTable 을 매개 변수 로 하 는 용법 이 있 음 을 발견 하고 소감 을 간단히 말씀 드 리 겠 습 니 다.예제 코드 다운로드 1,테스트 환경 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 만 사용 할 수 있 습 니 다.2.테스트 개술 테스트 항목 은 매우 간단 하 다.바로 새로운 사용자 을 추가 하 는 것 이다. 3.데이터 준비 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
 
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);
10
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
}
catch (Exception ex)
{
throw ex;
}
}
버튼 을 클릭 할 때 저장 과정 을 호출 합 니 다.테스트 는 완 성 됐 습 니 다.

좋은 웹페이지 즐겨찾기