본문 바로가기

IT/Visual Studio

[.Net] C# DataTable 객체를 Database에 저장하기

엑셀이나 대량의 자료를 Database로 저장하기 위한 내용입니다.

 

-----------------------------------------

-- 예제 테이블 생성 , DataTable을 위한 Table Type을 만든다.

-----------------------------------------

CREATE TYPE [dbo].[ORDER_PLAYAUTO_TYPE] AS TABLE (

[일자] [date] NOT NULL,

[순번] [smallint] NOT NULL,

[거래처코드] [varchar](10) NULL,

[거래처명] [varchar](10) NULL,

[담당자] [varchar](10) NULL,

[출하창고] [varchar](10) NULL,

[거래유형] [varchar](10) NULL,

[거래처등급] [varchar](10) NULL,

[통화] [varchar](10) NULL,

[환율] [numeric](18, 0) NULL,

[미수금] [numeric](18, 0) NULL,

[현잔액] [numeric](18, 0) NULL,

[계산서발행여부] [varchar](10) NULL,

[비고] [varchar](100) NULL,

[특이사항] [varchar](100) NULL,

[프로젝트] [varchar](10) NULL,

[품목코드] [varchar](30) NULL,

[품목명] [varchar](100) NULL,

[규격] [varchar](100) NULL,

[수량] [numeric](18, 0) NULL,

[단가] [numeric](18, 0) NULL,

[외화금액] [numeric](18, 0) NULL,

[공급가액] [numeric](18, 0) NULL,

[부가세] [numeric](18, 0) NULL,

[적요] [varchar](30) NULL,

[생산전표생성] [varchar](10) NULL,

[결제정보] [varchar](10) NULL,

[주문고유번호] [varchar](10) NULL,

[주문고유번호(DB)] [varchar](10) NULL,

[수령자명] [varchar](20) NULL,

[수령자휴대폰] [varchar](20) NULL,

[배송비금액] [numeric](18, 0) NULL,

[배송메세지] [varchar](100) NULL,

[총주문수량] [numeric](18, 0) NULL,

[판매가] [numeric](18, 0) NULL,

[총판매가] [numeric](18, 0) NULL,

[배송방법(원본)] [varchar](10) NULL

GO

 

---------------------------------------------

- DataTable을 Table에 삽입하는 

-    Stored Procedure 생성한다.

---------------------------------------------

CREATE PROCEDURE [dbo].[cisORDER_PLAYAUTO]

    @myTableType ORDER_PLAYAUTO_TYPE readonly

AS

BEGIN

    insert into ORDER_PLAYAUTO select * from @myTableType 

END

GO​ 

 


        #region C# Code

 

                // cisORDER_PLAYAUTO Stored Procedure를 호출한다.

                using (var command = new SqlCommand("cisORDER_PLAYAUTO") { CommandType = CommandType.StoredProcedure })

                {

                    // 저장을 위한 DataTable을 생성하고

                    var dt = new DataTable(); 

                    // 데이터에 정보를 채워서 준비한다.

                    // 사용자가 처리

 

                    // Parameter에 DataTable을 전달한다.

                    command.Parameters.Add(new SqlParameter("@ORDER_PLAYAUTO_TYPE", dt));

                    SqlHelper.Exec(command);

                }​ 

       #endregion