2013-03-21 21 views
-1

我正在開發一個應用程序,我需要根據員工的進出條目生成報告。 我沒有使用動態查詢的數據庫相關應用程序的經驗。 在這個特定的應用程序中,我需要通過動態sql查詢。在visual studio中使用動態sql在c#代碼

在這我需要根據用戶選擇選擇列名稱,然後將它們傳遞給另一個SQL查詢作爲參數。 這裏查詢...

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) 

我一直沒能推算的方式,如何使用C#代碼的代碼。

請幫忙。

在此先感謝...

+0

我的確在這裏建議一個存儲過程 – 2013-03-21 07:52:56

+0

@PraveenNambiar先生,如何在C#代碼中使用存儲過程? – humorousdragon 2013-03-21 08:01:17

回答

1

最好的辦法是在你的數據庫可以處理傳入的請求創建一個存儲過程,並執行查詢。下面是關於存儲過程的一些詳細信息:

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

然後,你將需要創建在你的C#代碼與數據庫的連接:

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

最後,你需要叫你的存儲過程使用剛剛創建的連接並傳遞來自C#代碼的參數,這些參數已在StackOverflow上多次應答:

How to execute a stored procedure within C# program

+0

先生,有什麼辦法,我不需要使用數據庫.. – humorousdragon 2013-03-21 08:02:49

+0

實際上數據庫中的值是由其他應用程序插入,我不允許對數據庫進行任何更改。 – humorousdragon 2013-03-21 08:04:13

+0

你是什麼意思?你想在你的C#代碼中建立SQL,然後在數據庫上執行它? – 2013-03-21 08:05:08

相關問題