Skip to content

diegoralt/StoredProcedureFtp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

StoredProcedureFtp C#

En este pequeño ejemplo mostrare como obtener los resultados de una consulta al ejecutar un Procedimiento Almacenado en una Base de Datos SQL Server y publicar la consulta en un servidor FTP.

Es una aplicación de consola sencilla que espero les sea muy útil.

Modelo de Datos

En este ejemplo defino un modelo de datos simple con 4 campos

class ReportsModel
{
  public string CardNumber { get; set; }
  public string Item { get; set; }
  public string Units { get; set; }
  public string UnitsBonus { get; set; }
}

El archivo publicado en el servidor FTP será un txt con la siguiente forma:

CardNumber|Item|Units|UnitsBonus

CardNumber|Item|Units|UnitsBonus

CardNumber|Item|Units|UnitsBonus

etc...

Codigo para ejecutar Procedimiento Almacenado

string connString = "Data Source=tcp:<nombredeServidor>.database.windows.net,1433;Initial Catalog=<nombreBasedeDatos>;Integrated Security=False;User ID=<usuario>@<nombredeServidor>;Password=<contraseña>;Connect Timeout=30";
SqlConnection conn = new SqlConnection(connString);
SqlCommand command = new SqlCommand("<Nombre de procedimiento almacenado>", conn);
command.CommandType = CommandType.StoredProcedure;
SqlDataReader reader;

List<ReportsModel> reports = new List<ReportsModel>();
try
{
  conn.Open();
  reader = command.ExecuteReader();
  while (reader.Read())
    {
    reports.Add(new ReportsModel
      {
        CardNumber = Convert.ToString(reader["CardNumber"]),
        Item = Convert.ToString(reader["Item"]),
        Units = Convert.ToString(reader["Units"]),
        UnitsBonus = Convert.ToString(reader["UnitsBonus"]),
      });
    }
}
catch (Exception ex)
{
  Console.WriteLine(ex.Message);
}
finally
{
  conn.Close();
}

List<string> file = new List<string>();
foreach (var item in reports)
{
  file.Add(item.CardNumber + "|"  + item.Item + "|" + item.Units + "|" + item.UnitsBonus);
}

createFile(file);

Función para publicar archivo en FTP

public static void createFile(List<string> file)
{
  string date = DateTime.Now.ToString("dd/MM/yyyy").Replace("/", "");
            
  string connftp = "<Direccion_de_servidor_ftp>" + date + ".txt";

  FtpWebRequest request = (FtpWebRequest)WebRequest.Create(connftp);
  request.Credentials = new NetworkCredential("<Usuario>", "<Contraseña>");
  request.Method = WebRequestMethods.Ftp.UploadFile;

  byte[] fileContent = file.SelectMany(s => Encoding.UTF8.GetBytes(s + Environment.NewLine)).ToArray();
  request.ContentLength = fileContent.Length;

  Stream requestStream = request.GetRequestStream();
  requestStream.Write(fileContent, 0, fileContent.Length);
  requestStream.Close();

  FtpWebResponse response = (FtpWebResponse)request.GetResponse();
  Console.WriteLine(response.StatusDescription);
  response.Close();
}

Para más información pueden consultar

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages