C sharp - Store Procedures

 
Vista:

Store Procedures

Publicado por Juan Alfredo (2 intervenciones) el 26/08/2008 19:17:14
Hola,

Tengo el siguiente código con sentencias sql que funciona correctamente, pero me gustarìa saber como implementar la misma funcionalidad con store procedures, por rendimiento y sencilles de código. Muchas gracias.

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Npgsql;

/// <summary>
/// Summary description for GestionLineas
/// </summary>
public class GestionLineas
{
private String sql;

public GestionLineas()
{
}

private DataTable GetTabla(String Name, String Sql)
{
//crea un objeto DataTable con el nombre
//especificado a partir de la instrucción
//Select indicada
DataSet ds = new DataSet();
Data datos = new Data();
NpgsqlDataAdapter adp = datos.getAdapter(Sql);
adp.Fill(ds, Name);
return ds.Tables[Name];

}

public DataTable GetLineas()
{
sql = "SELECT id, otorgante, agente, denominacion, destinatario, destino, info,";
sql += "(SELECT descripcion FROM agente WHERE (id = linea.agente)) AS Operador,";
sql += "(SELECT descripcion FROM otorgante WHERE (id = linea.otorgante)) AS Institucion ";
sql += "FROM linea ";

return GetTabla("linea", sql);
}

public Linea GetLineasById(int id)
{
Data datos = new Data();
NpgsqlConnection con = datos.GetConnection();
NpgsqlDataReader dr;
String sql = "Select * From linea Where id = " + id;
//realiza la operación si se ha conseguido
//una conexión
if (con != null)
{
NpgsqlCommand cmd = new NpgsqlCommand(sql, con);
try
{
dr = cmd.ExecuteReader();

if (dr.Read())
{
Linea ln = new Linea((int)dr["id"],
(int)dr["otorgante"],
(int)dr["agente"],
(String)dr["denominacion"],
(String)dr["destinatario"],
(String)dr["destino"],
(String)dr["info"]);

return ln;
}
else
return null;
}
catch
{
return null;
}
finally
{
con.Close();
}
}
else
return null;

}

public DataTable GetLineaByOtorgante(int IdOtorgante)
{
sql = "SELECT id, otorgante, agente, denominacion, destinatario, destino, info,";
sql += "(SELECT descripcion FROM agente WHERE (id = linea.agente)) AS Operador,";
sql += "(SELECT descripcion FROM otorgante WHERE (id = linea.otorgante)) AS Institucion ";
sql += "FROM linea ";
sql += "WHERE otorgante = " + IdOtorgante;

return GetTabla("linea", sql);
}

public DataTable GetLineaByAgente(int IdAgente)
{
sql = "SELECT id, otorgante, agente, denominacion, destinatario, destino, info,";
sql += "(SELECT descripcion FROM agente WHERE (id = linea.agente)) AS Operador,";
sql += "(SELECT descripcion FROM otorgante WHERE (id = linea.otorgante)) AS Institucion ";
sql += "FROM linea ";
sql += "WHERE agente = " + IdAgente;

return GetTabla("linea", sql);
}

public DataTable GetLineaByDenominacion(String deno)
{
if (deno == null)
deno = "*";

sql = "SELECT id, otorgante, agente, denominacion, destinatario, destino, info,";
sql += "(SELECT descripcion FROM agente WHERE (id = linea.agente)) AS Operador,";
sql += "(SELECT descripcion FROM otorgante WHERE (id = linea.otorgante)) AS Institucion ";
sql += "FROM linea ";
sql += "WHERE denominacion LIKE '" + '%' + deno + "%'";

return GetTabla("linea", sql);
}


public bool AltaLinea(Linea ln)
{
Data datos = new Data();
NpgsqlConnection cn = datos.GetConnection();
//realiza la operación si se ha conseguido
//una conexión.
if (cn != null)
{
//utiliza el modo conectado pues es una
//actualización puntual
NpgsqlCommand cmd;
sql = "Insert into linea (otorgante,agente,denominacion,destinatario,destino,info) values (";
sql += "'" + ln.IdOtorgante + "',";
sql += "'" + ln.IdAgente + "',";
sql += "'" + ln.Denominacion + "',";
sql += "'" + ln.Destinatario + "',";
sql += "'" + ln.Destino + "',";
sql += "'" + ln.Info + "')";
cmd = new NpgsqlCommand(sql, cn);
try
{
cmd.ExecuteNonQuery();
return true;
}
catch
{
return false;
}
finally
{
cn.Close();
}
}
else
return false;
}

public bool UpdateLinea(Linea ln)
{
Data datos = new Data();
NpgsqlConnection cn = datos.GetConnection();
//realiza la operación si se ha conseguido
//una conexión.
if (cn != null)
{
//utiliza el modo conectado pues es una
//actualización puntual
NpgsqlCommand cmd;
sql = "Update linea SET ";
sql += "otorgante = '" + ln.IdOtorgante + "',";
sql += "agente = '" + ln.IdAgente + "',";
sql += "denominacion = '" + ln.Denominacion + "',";
sql += "destinatario = '" + ln.Destinatario + "',";
sql += "destino = '" + ln.Destino + "',";
sql += "info = '" + ln.Info+ "'";
sql += " Where id = " + ln.IdLinea;
cmd = new NpgsqlCommand(sql, cn);
try
{
cmd.ExecuteNonQuery();
return true;
}
catch
{
return false;
}
finally
{
cn.Close();
}
}
else
return false;
}

public bool DeleteLinea(int id)
{
Data datos = new Data();
NpgsqlConnection cn = datos.GetConnection();
//realiza la operación si se ha conseguido
//una conexión.
if (cn != null)
{
//utiliza el modo conectado pues es una
//actualización puntual
NpgsqlCommand cmd;
sql = "DELETE FROM linea ";
sql += " Where id = " + id;
cmd = new NpgsqlCommand(sql, cn);
try
{
cmd.ExecuteNonQuery();
return true;
}
catch
{
return false;
}
finally
{
cn.Close();
}
}
else
return false;
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 158
Bronce
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

RE:Store Procedures

Publicado por YamilBracho (1164 intervenciones) el 05/09/2008 19:22:13
Creas los SP dentro de SQL Server y dentro del codigo .NET creas un command para hacer la llamada al SP. Colocas el nombre del SP como CommandText, especificas que el CommandType es un SP y creas si es necesario la coleccion de parametros para el SP
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Store Procedures

Publicado por Alfredo Barrios (9 intervenciones) el 10/10/2008 14:46:16
Te envié mi respuesta por email...por aquí no cabe
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Store Procedures

Publicado por Juan Alfredo (2 intervenciones) el 10/10/2008 15:43:16
Hola,

A que mail me la enviaste?. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar