elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Ejecutar Porcedimiento almacenado desde C#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejecutar Porcedimiento almacenado desde C#  (Leído 1,821 veces)
proteus8

Desconectado Desconectado

Mensajes: 55


Ver Perfil
Ejecutar Porcedimiento almacenado desde C#
« en: 12 Septiembre 2013, 20:53 pm »

hola a todos, espero me puedan ayudar tengo un procedimiento almacenado en una base de datos SYBASE, este procedimiento lo ejecuto a través de un código en C# para una aplicación de consola y el resultado lo exporto a una archivo.CSV esto sin problemas, lo que necesito ahora es poder ejecutar mas de una vez ese procedimiento y el resultado poder ponerlo es un solo archivo.CSV, no se si me explico bien, bueno tratare de poner un ejemplo: tengo un listado como el siguientes con nombres de equipos:

ID|nombre_equipo
1 |BBL52E_02
2 |OSO52E_04

por cada uno de esos equipos necesito ejecutar el procedimiento almacenado 3 veces, para poder traer 2 datos correspondientes a cada equipo y el resultado exportarlo a un archivo.CSV. estos serian los procedimientos que debería ejecutar por ejemplo para el equipo numero uno (BBL52E_02).

exec sp_trendView @tablename='collect', @tagname='analog.BBL52E_02_____P.curval', @columnname='value' , @starttime='01/09/2013 00:00:00', @endtime= '01/09/2013 23:59:00'

exec sp_trendView @tablename='collect', @tagname='analog.BBL52E_02_____Q.curval', @columnname='value' , @starttime='01/09/2013 00:00:00', @endtime= '01/09/2013 23:59:00'

exec sp_trendView @tablename='collect', @tagname='analog.BBL52E_02_____S.curval', @columnname='value' , @starttime='01/09/2013 00:00:00', @endtime= '01/09/2013 23:59:00'

si se fijan lo único que cambia en cada ejecución del procedimiento es el campo llamado "tagname".

este es mi código donde solo ejecuto una ves el procedimiento:
Código c#:

Código
  1. using System;
  2. using System.Data;
  3. using System.Data.Odbc;
  4. using MySql.Data.MySqlClient;
  5. using System.IO;
  6.  
  7.  
  8.  
  9.  
  10. namespace TestODBC
  11. {
  12.    class Program
  13.    {
  14.        static void Main(string[] args)
  15.        {
  16.            MostrarDatos();
  17.            Console.ReadLine();
  18.            DateTime Hoy = DateTime.Today;
  19.  
  20.        }
  21.  
  22.        private static void MostrarDatos()
  23.        {
  24.  
  25.            string strFilePath = @"C:\ datas.csv";        
  26.            using (OdbcConnection oCn = new OdbcConnection("Driver={Sybase System 10};SRVR=CMX;DB=timeline;DSN=Default;UID=xisapp;PWD=apphistory;"))
  27.            {
  28.                try
  29.                {
  30.                    string proc = String.Format("exec sp_trendView @tablename='{0}', @tagname='{1}', @columnname='{2}', @starttime='{3}', @endtime= '{4}'",
  31.                                               "collect", "analog.BBL52B_02_____P.curval", "value", "01/09/2013 00:00:00", "01/09/2013 23:59:00");
  32.  
  33.                    OdbcCommand oCmd = new OdbcCommand(proc,oCn);
  34.                    DataTable rows = new DataTable("datos");
  35.                    OdbcDataAdapter oDt = new OdbcDataAdapter(oCmd);
  36.                   oCn.Open();
  37.  
  38.                    try
  39.                    {
  40.                        oDt.Fill(rows);
  41.                        StreamWriter sw = new StreamWriter(strFilePath, false);
  42.                        int iColCount = rows.Columns.Count;
  43.                        sw.Write("Alimentador");
  44.                        sw.Write(",");
  45.                        sw.Write("Fecha");
  46.                        sw.Write(",");
  47.                        sw.Write("P");
  48.                        sw.Write(",");
  49.                        sw.Write("Q");
  50.                        sw.Write(",");
  51.                        sw.Write("S");
  52.                        sw.Write(sw.NewLine);
  53.                       foreach (DataRow row in rows.Rows)
  54.                            {  
  55.  
  56.                                        sw.Write("BBL52B_02".ToString());
  57.                                        sw.Write(",");            
  58.                                        sw.Write(row[0].ToString());
  59.                                        sw.Write(",");
  60.                                        sw.Write(row[2].ToString());
  61.                                        sw.Write(sw.NewLine);
  62.  
  63.                           }
  64.  
  65.                           sw.Close();
  66.                            Console.WriteLine("Proceso Finalizado");
  67.                      }
  68.  
  69.                    catch (Exception ex)
  70.                    {
  71.                        Console.WriteLine(String.Format("Error al consultar procedimiento : {0}", ex.Message));
  72.                    }
  73.                }
  74.                catch (Exception ex)
  75.                {
  76.                    Console.WriteLine(ex.Message);
  77.                }
  78.            }
  79.        }
  80.    }
  81. }
  82.  
espero me puedan ayudar!!! 


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines