파라메터쿼리를 만들어주는 프로시져


C# Code Generator for Stored Procedures

# 들어가는말
파라메터쿼리가 성능이 좋고 SQL인젝션 공격등을 보안할 수 있다고 합니다.
하지만 작성하기가 여간 까다로운것이 아닙니다.
보통 테이블에 필드가 20~30개 있다고 하면 이걸 다 적어주어야 할 뿐만 아니라 타입도 sp_help등을 통해서 확인하면서 코딩을 하여야 합니다.
여간 복잡하고 귀찮은 작업이 아닐 수 없습니다.
네이버나 구글에서 검색하면 CodeProJect 에 등록된 포스트를 보실 수 있을겁니다.


# 프로시져를 만들어 보세요


위의 파일을 다운로드 받아서 쿼리분석기나 Microsoft SQL Express에 쿼리를 돌려보세요.

그럼 tools_CS_SPROC_Builder 이라는 프로시져가 생성이 됩니다.


# 사용법
tools_CS_SPROC_Builder 테이블명









# 출력물

try
   {
   SqlParameter[] paramsToStore = new SqlParameter[46];
 
   paramsToStore[0] = new SqlParameter("@CO_GUBUN", SqlDbType.VarChar);
   paramsToStore[0].Value = ?;
   paramsToStore[0].Size=2;
   paramsToStore[1] = new SqlParameter("@CO_GBNAME", SqlDbType.VarChar);
   paramsToStore[1].Value = ?;
   paramsToStore[1].Size=30;
   paramsToStore[2] = new SqlParameter("@CO_SANAME", SqlDbType.VarChar);
   paramsToStore[2].Value = ?;
   paramsToStore[2].Size=30;
   paramsToStore[3] = new SqlParameter("@CO_ESANAME", SqlDbType.VarChar);
   paramsToStore[3].Value = ?;
   paramsToStore[3].Size=50;
   paramsToStore[4] = new SqlParameter("@CO_SETDATE", SqlDbType.VarChar);
   paramsToStore[4].Value = ?;
   paramsToStore[4].Size=8;
   paramsToStore[5] = new SqlParameter("@CO_SANO", SqlDbType.VarChar);
   paramsToStore[5].Value = ?;
   paramsToStore[5].Size=10;
   paramsToStore[6] = new SqlParameter("@CO_BUBIN", SqlDbType.VarChar);
   paramsToStore[6].Value = ?;
   paramsToStore[6].Size=13;
   paramsToStore[7] = new SqlParameter("@CO_MASTER", SqlDbType.VarChar);
   paramsToStore[7].Value = ?;
   paramsToStore[7].Size=30;
   paramsToStore[8] = new SqlParameter("@CO_EMASTER", SqlDbType.VarChar);
   paramsToStore[8].Value = ?;
   paramsToStore[8].Size=50;
   paramsToStore[9] = new SqlParameter("@CO_UPJONG", SqlDbType.VarChar);
   paramsToStore[9].Value = ?;
   paramsToStore[9].Size=50;
   paramsToStore[10] = new SqlParameter("@CO_INWON", SqlDbType.VarChar);
   paramsToStore[10].Value = ?;
   paramsToStore[10].Size=5;
   paramsToStore[11] = new SqlParameter("@CO_UPTAE", SqlDbType.VarChar);
   paramsToStore[11].Value = ?;
   paramsToStore[11].Size=50;
   paramsToStore[12] = new SqlParameter("@CO_T_DDD", SqlDbType.VarChar);
   paramsToStore[12].Value = ?;
   paramsToStore[12].Size=20;
   paramsToStore[13] = new SqlParameter("@CO_T_KKK", SqlDbType.VarChar);
   paramsToStore[13].Value = ?;
   paramsToStore[13].Size=4;
   paramsToStore[14] = new SqlParameter("@CO_T_LLL", SqlDbType.VarChar);
   paramsToStore[14].Value = ?;
   paramsToStore[14].Size=4;
   paramsToStore[15] = new SqlParameter("@CO_F_DDD", SqlDbType.VarChar);
   paramsToStore[15].Value = ?;
   paramsToStore[15].Size=20;
   paramsToStore[16] = new SqlParameter("@CO_F_KKK", SqlDbType.VarChar);
   paramsToStore[16].Value = ?;
   paramsToStore[16].Size=4;
   paramsToStore[17] = new SqlParameter("@CO_F_LLL", SqlDbType.VarChar);
   paramsToStore[17].Value = ?;
   paramsToStore[17].Size=4;
   paramsToStore[18] = new SqlParameter("@CO_POST", SqlDbType.VarChar);
   paramsToStore[18].Value = ?;
   paramsToStore[18].Size=7;
   paramsToStore[19] = new SqlParameter("@CO_JUSO", SqlDbType.VarChar);
   paramsToStore[19].Value = ?;
   paramsToStore[19].Size=100;
   paramsToStore[20] = new SqlParameter("@CO_ENGJUSO", SqlDbType.VarChar);
   paramsToStore[20].Value = ?;
   paramsToStore[20].Size=255;
   paramsToStore[21] = new SqlParameter("@CO_JUSIC", SqlDbType.Money);
   paramsToStore[21].Value = ?;
   paramsToStore[22] = new SqlParameter("@CO_JUAMT", SqlDbType.Money);
   paramsToStore[22].Value = ?;
   paramsToStore[23] = new SqlParameter("@CO_BALSU1", SqlDbType.Money);
   paramsToStore[23].Value = ?;
   paramsToStore[24] = new SqlParameter("@CO_BALSU2", SqlDbType.Money);
   paramsToStore[24].Value = ?;
   paramsToStore[25] = new SqlParameter("@CO_MAGAM", SqlDbType.VarChar);
   paramsToStore[25].Value = ?;
   paramsToStore[25].Size=6;
   paramsToStore[26] = new SqlParameter("@CO_SDATE", SqlDbType.VarChar);
   paramsToStore[26].Value = ?;
   paramsToStore[26].Size=8;
   paramsToStore[27] = new SqlParameter("@CO_EDATE", SqlDbType.VarChar);
   paramsToStore[27].Value = ?;
   paramsToStore[27].Size=8;
   paramsToStore[28] = new SqlParameter("@CO_LDATE", SqlDbType.VarChar);
   paramsToStore[28].Value = ?;
   paramsToStore[28].Size=8;
   paramsToStore[29] = new SqlParameter("@CO_JABON", SqlDbType.Money);
   paramsToStore[29].Value = ?;
   paramsToStore[30] = new SqlParameter("@CO_GITA", SqlDbType.VarChar);
   paramsToStore[30].Value = ?;
   paramsToStore[30].Size=50;
   paramsToStore[31] = new SqlParameter("@CO_GIGAN", SqlDbType.VarChar);
   paramsToStore[31].Value = ?;
   paramsToStore[31].Size=2;
   paramsToStore[32] = new SqlParameter("@CO_YUMU", SqlDbType.VarChar);
   paramsToStore[32].Value = ?;
   paramsToStore[32].Size=1;
   paramsToStore[33] = new SqlParameter("@CO_GUBYU", SqlDbType.VarChar);
   paramsToStore[33].Value = ?;
   paramsToStore[33].Size=2;
   paramsToStore[34] = new SqlParameter("@CO_INUSER", SqlDbType.VarChar);
   paramsToStore[34].Value = ?;
   paramsToStore[34].Size=8;
   paramsToStore[35] = new SqlParameter("@CO_INDATE", SqlDbType.VarChar);
   paramsToStore[35].Value = ?;
   paramsToStore[35].Size=8;
   paramsToStore[36] = new SqlParameter("@CO_TOIJIK", SqlDbType.VarChar);
   paramsToStore[36].Value = ?;
   paramsToStore[36].Size=1;
   paramsToStore[37] = new SqlParameter("@CO_PROC", SqlDbType.Int);
   paramsToStore[37].Value = ?;
   paramsToStore[38] = new SqlParameter("@CO_URL", SqlDbType.VarChar);
   paramsToStore[38].Value = ?;
   paramsToStore[38].Size=50;
   paramsToStore[42] = new SqlParameter("@CO_HOMEID", SqlDbType.VarChar);
   paramsToStore[42].Value = ?;
   paramsToStore[42].Size=50;
   paramsToStore[43] = new SqlParameter("@CO_MANAGETAX", SqlDbType.VarChar);
   paramsToStore[43].Value = ?;
   paramsToStore[43].Size=30;
   paramsToStore[44] = new SqlParameter("@CO_MANAGEOFFICE", SqlDbType.VarChar);
   paramsToStore[44].Value = ?;
   paramsToStore[44].Size=30;
   paramsToStore[45] = new SqlParameter("@CO_MASTERNO", SqlDbType.VarChar);
   paramsToStore[45].Value = ?;
   paramsToStore[45].Size=13;
   paramsToStore[49] = new SqlParameter("@co_gbubin", SqlDbType.Int);
   paramsToStore[49].Value = ?;
   paramsToStore[50] = new SqlParameter("@co_gkind", SqlDbType.Int);
   paramsToStore[50].Value = ?;
   paramsToStore[51] = new SqlParameter("@co_gsojae", SqlDbType.Int);
   paramsToStore[51].Value = ?;
 
   SqlHelper.ExecuteNonQuery(conn.Connection, CommandType.StoredProcedure,"c_company", paramsToStore);



이제 위의 코드에서 원하는 값만 넣고
SqlHelper.ExecuteNonQuery(conn.Connection, CommandType.StoredProcedure,"c_company", paramsToStore);
이부분 처럼 던지면 됩니다 ^^




이 글은 "씨디맨" 의 동의 없이 전문 재배포 금지. 링크 및 트랙백은 허가 없이 무제한 허용 *  [자세히보기]

질문 또는 댓글을 남겨 주세요.

질문글은 무조건 답변 드리겠습니다. 이곳에 질문을 올려주세요.
이 글과 연관이 없는 급한 질문은 빠른 질문/답변을 이용해 주세요!

댓글 입력 폼

s;s s;s

     이미지 업로드

  1. 건강정보 2009.02.24 11:57 신고

    눈이 핑글핑글 돌아갑니다...
    그래도 오늘 또 새로운거 배워가네요~^^

    perm. |  mod/del. |  reply.
    • 엔돌슨 2009.02.24 12:34 신고

      헤헤 행복박스님도 좋은하루되세용 ㅋ
      C#으로 쿼리작성하기 귀찮은걸 프로시져로 만들어둔 것이 많더라구요..
      심지어 insert도 필드가 많으니깐
      이런식으로 처리한걸 봤습니다 ^.^-
      구글로 검색하면 샤샥 나옵니다 ㅋ

      perm. |  mod/del. | 
  2. 데니즈T 2009.02.24 13:21 신고

    컴퓨터 스토리 블로그도 이제 팀블로그 형태로 운영되는건가요? ㅎㅎ
    지금 C# 배우려고 입문하고 있습니다.
    아직은 뭐가뭔지 모르겠지만, 저 포스트가 언젠가는 저에게 도움이 될거같은 느낌이 팍팍와요~
    얼른 C# 공부해야 겠습니다. 휘휙~

    perm. |  mod/del. |  reply.
    • 엔돌슨 2009.02.24 22:54 신고

      팀블로그에요
      [엔돌슨]으로 활동하고 있습니다.
      C#은 잘하는건 아니구
      저역시 배우는 단계에요.
      asp.net with c#으로 erp관련 프로젝트를 조금했었구요.
      현재 win form에 관심이 많아서 혼자 연습중입니다.
      좋은 자료 있으면 포스팅할께요
      잘부탁드려요

      perm. |  mod/del. | 
  3. 마음의 꿀단지 2009.02.24 14:50

    슬슬 함 배워 봐야 겠네요 ^^

    perm. |  mod/del. |  reply.
    • 엔돌슨 2009.02.24 22:56 신고

      넵~~ 잘부탁드려요.
      좋은건 계속쓸수록 실력이 늘어나는 거 같아요

      perm. |  mod/del. | 
  4. 재우니 2009.02.25 00:46 신고

    stored procedure 를 파라마터화된 방식으로 전송하는 구문이군요..^^ 필드가 엄청 많을때는 매우 효과적일것 같네요...^__^

    perm. |  mod/del. |  reply.
    • 엔돌슨 2009.02.25 08:28 신고

      넵~ 무지 편합니다.
      제가 만든것이 아니라서 뭐라고 하기는 그렇치만
      쿼리잘 작성하시는 분이 보시면 이 외국인 쪼매 했군
      보이실겁니다 ^^ㅋㅋ
      아이디어가 좋으니 또 귀찮은데 뚝딱 해주니 좋은거 같아요

      perm. |  mod/del. | 
  5. 문준호 2009.02.26 16:22 신고

    눈이 핑글핑글 돌아가네요... SQL을 잘 모르니 어떤 구조인지를 모르겠네요,,,

    perm. |  mod/del. |  reply.