Con ADO 2.0 podemos conectarnos a una base de datos leer el contenido y que nos devuelva una tabla rellenada, sin necesidade de hacer nada mas que:
DataTable table = new DataTable();
SqlConnection conexion = new SqlConnection("Cadena de Conexión"));
SqlCommand cmd = new SqlCommand();
cmd.Connection = conexion;
cmd.CommandText = "Select * from table";
conexion.Open;
SqlDataReader reader = Command.ExecuteReader(CommandBehavior.CloseConnection);
table.Load(reader);
Este espero que sea un blog donde mucha gente que este empezando en el mundo de la programación, encuentre una ayuda.
martes, 26 de junio de 2007
jueves, 7 de junio de 2007
Objectos. Falta por comentar
Este código que acabo de pastear en la parte de abajo es para que os hagais una idea de un proyecto que estoy haciendo. El proyecto en cuestion intentará facilitar algo las cosas a la hora de crear mantenimientos de tablas en Bases de datos. Lo que quiero hacer es lo siguiente:
1.- Un proyecto que se conecte a un servidor de BD sea cual sea (por ahora SQL) e indicando una Base de datos y una tabla genere automáticamente el objecto VO y el DAO.
2.- Una clase dbManager que se encarge de realizar todas las operaciones con la base de datos. Voy a intentar hacer tambien un constructor para que el mismo genere los query a ejecutar.
Se que lo que acabo de escribir es algo, más bien muy rollo, pero... espero poder en poco tiempo poner un enlace para que lo probeis. En el trabajo están encantados con él y eso que por ahora está en fase Beta.
Seguiré comentando ...
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
public class clasesVO {
private System.Int32 _id;
public System.Int32 Id{
get { return _id;}
set { _id=value;}
}
private System.String _descripcion;
public System.String Descripcion{
get { return _descripcion;}
set { _descripcion=value;}
}
private System.String _path;
public System.String Path{
get { return _path;}
set { _path=value;}
}
}
public class clasesDAO {
public static string tableName = "clases";
public static object get() {
dbManager.Manager man = new dbManager.Manager(new clasesVO(), tableName, dbManager.sqlOperation.select);
int top = 100;
return man.select(new string[] { }, top);
}
/*
public static object getNombreById(int id) {
dbManager.Manager man = new dbManager.Manager(new clasesVO(), tableName, dbManager.sqlOperation.select);
List condiciones = new List();
condiciones.Add(new dbManager.dbCondition("id", id, dbManager.typeCondition.igual));
return man.selectWhere(new string[] { "nombre" }, condiciones, 1);
}
*/
public static bool set(clasesVO item) {
dbManager.Manager man;
if (item.Id == 0) {
man = new dbManager.Manager(item, tableName, dbManager.sqlOperation.insert);
return man.insert();
} else {
man = new dbManager.Manager(item, tableName, dbManager.sqlOperation.update);
return man.update();
}
}
public static int setReturn(clasesVO item) {
dbManager.Manager man = new dbManager.Manager(item, tableName, dbManager.sqlOperation.insert);
int lastInsertId = man.insertReturn();
return lastInsertId;
}
public static bool delete(int id){
dbManager.Manager man = new dbManager.Manager(id, tableName, dbManager.sqlOperation.delete);
return man.delete();
}
public static List parseRows(System.Data.DataRowCollection rows) {
List lista = new List();
clasesVO pr = new clasesVO();
PropertyInfo[] prop = pr.GetType().GetProperties();
foreach (System.Data.DataRow row in rows) {
pr = new clasesVO();
foreach (PropertyInfo pi in prop) {
if (pi.CanWrite) {
try {
pi.SetValue(pr, row[pi.Name], null);
} catch (ArgumentException ex) {
Console.WriteLine(ex.Message);
}
}
}
lista.Add(pr);
}
return lista;
}
}
1.- Un proyecto que se conecte a un servidor de BD sea cual sea (por ahora SQL) e indicando una Base de datos y una tabla genere automáticamente el objecto VO y el DAO.
2.- Una clase dbManager que se encarge de realizar todas las operaciones con la base de datos. Voy a intentar hacer tambien un constructor para que el mismo genere los query a ejecutar.
Se que lo que acabo de escribir es algo, más bien muy rollo, pero... espero poder en poco tiempo poner un enlace para que lo probeis. En el trabajo están encantados con él y eso que por ahora está en fase Beta.
Seguiré comentando ...
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
public class clasesVO {
private System.Int32 _id;
public System.Int32 Id{
get { return _id;}
set { _id=value;}
}
private System.String _descripcion;
public System.String Descripcion{
get { return _descripcion;}
set { _descripcion=value;}
}
private System.String _path;
public System.String Path{
get { return _path;}
set { _path=value;}
}
}
public class clasesDAO {
public static string tableName = "clases";
public static object get() {
dbManager.Manager man = new dbManager.Manager(new clasesVO(), tableName, dbManager.sqlOperation.select);
int top = 100;
return man.select(new string[] { }, top);
}
/*
public static object getNombreById(int id) {
dbManager.Manager man = new dbManager.Manager(new clasesVO(), tableName, dbManager.sqlOperation.select);
List
condiciones.Add(new dbManager.dbCondition("id", id, dbManager.typeCondition.igual));
return man.selectWhere(new string[] { "nombre" }, condiciones, 1);
}
*/
public static bool set(clasesVO item) {
dbManager.Manager man;
if (item.Id == 0) {
man = new dbManager.Manager(item, tableName, dbManager.sqlOperation.insert);
return man.insert();
} else {
man = new dbManager.Manager(item, tableName, dbManager.sqlOperation.update);
return man.update();
}
}
public static int setReturn(clasesVO item) {
dbManager.Manager man = new dbManager.Manager(item, tableName, dbManager.sqlOperation.insert);
int lastInsertId = man.insertReturn();
return lastInsertId;
}
public static bool delete(int id){
dbManager.Manager man = new dbManager.Manager(id, tableName, dbManager.sqlOperation.delete);
return man.delete();
}
public static List
List
clasesVO pr = new clasesVO();
PropertyInfo[] prop = pr.GetType().GetProperties();
foreach (System.Data.DataRow row in rows) {
pr = new clasesVO();
foreach (PropertyInfo pi in prop) {
if (pi.CanWrite) {
try {
pi.SetValue(pr, row[pi.Name], null);
} catch (ArgumentException ex) {
Console.WriteLine(ex.Message);
}
}
}
lista.Add(pr);
}
return lista;
}
}
Suscribirse a:
Entradas (Atom)