none
funcion para hacer un insert de un select

    Question

  • Buenas, alguien tiene una idea sobre como hacer una funcion para hacer un insert de un select, la idea es hacer una funcion con dos parametros, el primero el nombre de la tabla destino y el segundo un select * de una tabla origen, tanto las tablas origen y destino tendrian la misma estructura.
    Saludos
    Wednesday, September 30, 2009 2:12 AM

Answers

  • hola

    podrias armar algo de esta forma:


    public class DynamicQuery
    {
        public string TableName {get; set;}
        public List<string> FiledName {get; set;}
        public List<DataItem> Data {get; set;}

    }

    public class DataItem
    {
        public string valor {get; set;}
        public Type DataType {get; set;}
    }

    public class QueryBuider
    {
       public void Save(DynamicQuery query)
       {
          // basicamente lo que haces aqui dentro es trabajr con los datos que define la clase DynamicQuery
          // armando la consulta a la db, o sea el query, que luego ejecutaas normalmente con los objetos de ado.net
          
         //recorres la coleccion de fieldName y armas el string de campos

         //recorres la coleccion de Data y armas los valores, ten en cuanta el tipo de dato, ya que si es string requeires '' si es numerico no

          string sql = string.Format("INSERT INTO {0} ((1}) VALUES ({2})", query.TableName, fieldName, Data);

          // ejecutas la variable sql
       }
    }

    bueno espero se entienda la idea
    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, September 30, 2009 2:42 AM

All replies

  • hola

    por ahí le falta especificar algo ams a la pregunta

    - que base de datos estas queriendo utilizar ?
    - como te queries conectar o sea utilizando los objetos basicos de de ado.net ?

    te recomendaría le des una mirada a estos links

    seguro ayuden

    con respecto a al funcion basicamente seria encapusular las lineas que realzian la conexiona  la db, no hay mucha ciencia en ellos

    public void Save(int param1, string param2)
    {
       // realizas la conexion a la db
       // confeccionas el query a ejecutar y armas el objeto command
       // ejecutas el query
    }

    por ahí la respuesta es algo genérica porque no tengo tanta posición en la pregunta.

    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, September 30, 2009 2:21 AM
  • la idea es usar los objetos clasicos del ADO.NET, command, DataTables, etc.
    La tabla de destino es de SQL Server, y la de origen es de ORACLE. hice unas clases para hacer las conexiones, hacer insert, select, y guardar el resultado en datatable, lo que no se me ocurre es parametrizarlo para que sea generico, sin tener que armar el insert a mano.
    Uso System.Data.OracleClient y System.Data.SqlClient.
    • Edited by Martin Spasiuk Wednesday, September 30, 2009 2:35 AM ampliacion
    Wednesday, September 30, 2009 2:28 AM
  • hola

    podrias armar algo de esta forma:


    public class DynamicQuery
    {
        public string TableName {get; set;}
        public List<string> FiledName {get; set;}
        public List<DataItem> Data {get; set;}

    }

    public class DataItem
    {
        public string valor {get; set;}
        public Type DataType {get; set;}
    }

    public class QueryBuider
    {
       public void Save(DynamicQuery query)
       {
          // basicamente lo que haces aqui dentro es trabajr con los datos que define la clase DynamicQuery
          // armando la consulta a la db, o sea el query, que luego ejecutaas normalmente con los objetos de ado.net
          
         //recorres la coleccion de fieldName y armas el string de campos

         //recorres la coleccion de Data y armas los valores, ten en cuanta el tipo de dato, ya que si es string requeires '' si es numerico no

          string sql = string.Format("INSERT INTO {0} ((1}) VALUES ({2})", query.TableName, fieldName, Data);

          // ejecutas la variable sql
       }
    }

    bueno espero se entienda la idea
    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, September 30, 2009 2:42 AM
  • hola

    podrias armar algo de esta forma:


    public class DynamicQuery
    {
        public string TableName {get; set;}
        public List<string> FiledName {get; set;}
        public List<DataItem> Data {get; set;}

    }

    public class DataItem
    {
        public string valor {get; set;}
        public Type DataType {get; set;}
    }

    public class QueryBuider
    {
       public void Save(DynamicQuery query)
       {
          // basicamente lo que haces aqui dentro es trabajr con los datos que define la clase DynamicQuery
          // armando la consulta a la db, o sea el query, que luego ejecutaas normalmente con los objetos de ado.net
          
         //recorres la coleccion de fieldName y armas el string de campos

         //recorres la coleccion de Data y armas los valores, ten en cuanta el tipo de dato, ya que si es string requeires '' si es numerico no

          string sql = string.Format("INSERT INTO {0} ((1}) VALUES ({2})", query.TableName, fieldName, Data);

          // ejecutas la variable sql
       }
    }

    bueno espero se entienda la idea
    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    gracias, voy a probar este codigo, pero es mas o menos lo que andaba buscando, ya tengo una idea de como llegar a implementarlo.
    Friday, October 02, 2009 5:39 PM