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;
}
}
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


0