2013-03-21 2 views
-1

Я разрабатываю приложение, в котором мне нужно создавать отчеты на основе входящих и выходящих записей сотрудников. У меня нет опыта работы с приложениями, связанными с базами данных, используя динамические запросы. В этом конкретном приложении мне нужно передать динамические SQL-запросы.с использованием динамического sql в коде C# в visual studio

В этом случае мне нужно выбрать имена столбцов на основе выбора пользователя, а затем передать их в другой запрос 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

Я предлагаю здесь хранимую процедуру –

+0

@PraveenNambiar sir, как использовать хранимую процедуру в коде C#? – humorousdragon

ответ

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

sir, есть ли способ, которым я не должен использовать базу данных. – humorousdragon

+0

Фактически значения в базе данных вставляются каким-либо другим приложением, и мне не разрешено вносить какие-либо изменения в базу данных. – humorousdragon

+0

Что это значит? Вы хотите создать SQL в своем коде C#, а затем выполнить его в базе данных? –