2013-03-21 2 views
-1

직원의 입출력 항목을 기반으로 보고서를 생성해야하는 응용 프로그램을 개발 중입니다. 동적 쿼리를 사용하는 데이터베이스 관련 응용 프로그램에 대한 경험이 없습니다. 이 특정 응용 프로그램에서 동적 SQL 쿼리를 전달해야합니다.Visual Studio의 C# 코드에서 동적 SQL을 사용합니다.

이 경우 사용자 선택에 따라 열 이름을 선택하고 매개 변수로 다른 SQL 쿼리에 전달해야합니다. 는 여기에 내가 어떻게 C# 코드에서이 코드를 사용하는 방법을 알아낼 수 없었다

DECLARE @cols AS NVARCHAR(MAX), 

    @query AS NVARCHAR(MAX) 


select @cols = STUFF((SELECT ',' + QUOTENAME(date +'_'+Logname) 
        from 
        (
         select doordate, 
         convert(char(10),doordate, 101) date, 
         LogName 
         from DoorLog 
         cross apply 
         (
         select 'In' LogName 
         union all 
         select 'Out' 
        ) l 
        ) s 
        group by convert(char(10), doordate, 112), date, Logname 
        order by convert(char(10), doordate, 112) 
      FOR XML PATH(''), TYPE 
      ).value('.', 'NVARCHAR(MAX)') 
     ,1,1,'') 

set @query 
    = 'select employeeid, name, '[email protected]+' 
     from 
     (
     select employeeid, name, 
      convert(char(8), doortime, 108) DoorTime, 
      date + ''_''+ col col_names 
     from 
     (
      select p.employeeid, 
       p.name, 
       convert(char(10),d.doordate, 101) date, 
       min(d.doordate) [In], 
       max(d.doordate) [Out] 
      from person p 
      left join doorlog d 
       on p.employeeid = d.employeeid 
      group by p.employeeid, p.name, 
       convert(char(10),d.doordate, 101) 
     )src 
     unpivot 
     (
      doortime 
      for col in ([In], [Out]) 
     ) unpiv 
     ) p 
     pivot 
     (
      max(doortime) 
      for col_names in('[email protected]+') 
     ) piv' 

execute(@query) 

... 쿼리입니다.

도와주세요. 가장 좋은 방법은 쿼리를 들어오는 요청을 처리 할 수있는 데이터베이스에 저장 프로 시저를 생성하고 실행하는 것입니다

+0

여기에 저장 프로 시저를 제안 했습니까 –

+0

@PraveenNambiar 선생님, C# 코드에서 저장 프로 시저를 사용하는 방법? – humorousdragon

답변

1

사전에

감사합니다 ....

http://msdn.microsoft.com/en-us/library/s4yys16a(v=vs.71).aspx

마지막으로 당신이 당신의 저장라고해야합니다

http://msdn.microsoft.com/en-us/library/aa174792(v=sql.80).aspx

그런 다음 당신이 당신의 C# 코드에서 데이터베이스에 대한 연결을 작성해야합니다 : 여기에 저장 프로 시저에 좀 더 정보입니다 당신이 방금 생성 한 연결을 사용하고 StackOverflow에서 여러 번 대답 해 왔던 C# 코드의 매개 변수를 전달합니다 :

How to execute a stored procedure within C# program

+0

선생님, 데이터베이스를 사용할 필요가없는 방법이 있습니다 .. – humorousdragon

+0

실제로 데이터베이스의 값이 다른 응용 프로그램에 의해 삽입되고 데이터베이스를 변경할 수 없습니다. – humorousdragon

+0

무엇을 의미합니까? C# 코드에서 SQL을 빌드 한 다음 데이터베이스에서 실행하려고합니까? –