C# Datatable을 매개 변수로 스토리지 프로시저 전송
6844 단어 Datatable
//
public static DataSet fnInsertSingleUser(DataTable v_dt, params string[] param)
{
try
{
SqlConnection cn = new SqlConnection(connectionString);//connertionString
SqlCommand cmd = cn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = @"" + param[0];
SqlParameter p = cmd.Parameters.AddWithValue("@User", v_dt);
//
SqlParameter pCode = cmd.Parameters.AddWithValue("@pCode", param[1]);
SqlParameter gsdm = cmd.Parameters.AddWithValue("@gsdm", param[2]);
SqlParameter khdm = cmd.Parameters.AddWithValue("@khdm", param[3]);
SqlParameter qy = cmd.Parameters.AddWithValue("@qy", param[4]);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds;
}
catch (Exception ex)
{
throw ex;
}
}
SQL
IF EXISTS ( SELECT A = 1
FROM sys.objects
WHERE name = 'PRCreate '
AND type = 'P' )
DROP PROCEDURE dbo.PRCreate
go
IF EXISTS ( SELECT A = 1
FROM sys.table_types
WHERE name = 'tempPR '
AND is_user_defined = 1 )
DROP TYPE dbo.tempPR
go
CREATE TYPE dbo.tempPR AS TABLE
(
PT_PCURR decimal(15, 2), -- 2 C# datatable
MATNR varchar(18)--
)
go
CREATE PROCEDURE dbo.PRCreate
(
@User AS dbo.tempPR READONLY, --C# datatable
@pCode varchar(50),
@gsdm varchar(50),
@khdm varchar(50),
@qy varchar(50)
)
AS
BEGIN
SELECT * FROM @User
END
호출
DataSet ds = new DataSet();
ds = SqlHelper.fnInsertSingleUser(dt, "PRCreate", param[0], param[2], param[3], param[4]);// ,
호출할 때 들어오는 매개 변수는 저장 과정 중 @User @pCode @gsdm @khdm @qy의 매개 변수와 일치해야 합니다. (첫 번째 코드 참조)
중점:
1. 저장 프로세스에 전송된 Datatable 매개 변수의 필드 선후 순서는 저장 프로세스에 생성된 테이블 필드의 선후 순서와 일치해야 한다.
2. 디버깅: select 문구로 데이터셋을 C#에 되돌려 데이터 테이블이 올바른지 확인합니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
yui--datatable 행 추가 형식텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.