none
Consulta Datatable RRS feed

  • Pregunta

  • Buenas tardes amigos

    Tengo un problema y e sque necesito obtener datos de disitntas BD uno es de sqlServer y otro de MYSQL

    entonces tengo el sigueinte codigo que lo que hace es leer la de MYSQL  y luego al obtener un valor que es el numero de pedido va y consulta en SQLserver y lo rellena

     using (SqlConnection cnrecoge = new SqlConnection(CadenaConexionSQLServer))
                {
                    using (SqlCommand cmdD = new SqlCommand())
                    {
                        cmdD.Connection = cnrecoge;
                        cnrecoge.Open();
                        string queryy = @"SELECT [BDDMOVIL].[dbo].[vst_Tiempo_MovAlmacen].[pedido]
                                  ,[BDDMOVIL].[dbo].[vst_Tiempo_MovAlmacen].[Tarea]
                                  ,[BDDMOVIL].[dbo].[vst_Tiempo_MovAlmacen].[cliente]
                                  ,[BDDMOVIL].[dbo].[vst_Tiempo_MovAlmacen].[usuario]
                                  ,[BDDMOVIL].[dbo].[vst_Tiempo_MovAlmacen].[FechaIni]
                                  ,[BDDMOVIL].[dbo].[vst_Tiempo_MovAlmacen].[FechaFin]
                                  ,[BDDMOVIL].[dbo].[vst_Tiempo_MovAlmacen].[Lineas_pedido]
                                  ,[BDDMOVIL].[dbo].[vst_Tiempo_MovAlmacen].[Lineas_Escaneadas]
                                  ,[BDDMOVIL].[dbo].[vst_Tiempo_MovAlmacen].[TotPaquetes]
                                  ,[BDDMOVIL].[dbo].[vst_Tiempo_MovAlmacen].[TotCajas]
                                  ,[BDDMOVIL].[dbo].[vst_Tiempo_MovAlmacen].[TotTiempo]
                              FROM [BDDMOVIL].[dbo].[vst_Tiempo_MovAlmacen]
                              inner join [BDDMOVIL].[dbo].[vst_TodasTareas] on ( [BDDMOVIL].[dbo].[vst_TodasTareas].id=[BDDMOVIL].[dbo].[vst_Tiempo_MovAlmacen].tarea)
                               where  [FechaFin] BETWEEN  @desde AND dateadd(day,1, @hasta ) and usuario =@operador and [BDDMOVIL].[dbo].[vst_TodasTareas].tipo_tarea=1 ";
    
                        cmdD.CommandType = CommandType.Text;
                        cmdD.CommandText = queryy;
    
                        cmdD.Parameters.AddWithValue("@operador", nombreoperario);
                        cmdD.Parameters.AddWithValue("@desde", fecha_desde);
                        cmdD.Parameters.AddWithValue("@hasta", fecha_hasta);
    
                        SqlDataAdapter dadetalle = new SqlDataAdapter(queryy, CadenaConexionSQLServer);
    
                        DataTable dDetalle = new DataTable();
                        dadetalle.SelectCommand = cmdD;
                        dadetalle.Fill(dDetalle);
                        DataTable dtdetalle = GetDataTableconsulta();
                     
                        for (int i = 0; i < dDetalle.Rows.Count; i++)
                        {
                            DataRow dr = dDetalle.Rows[i];
                            DataRow newRow = dtdetalle.NewRow();
    
                            newRow["Usuario"] = dr["usuario"];
                            newRow["pedido"] = dr["pedido"];
                            pedido = Convert.ToString(dr["pedido"]);
    Con el Pedido voy y consulto la otra tabla de SQLserver

    entonces hay alguna forma de hacer que no tenga que abrir tantas veces la consulta?

    Saludos

    Lo que necesito 


    ruben

    lunes, 5 de febrero de 2018 14:00

Respuestas

Todas las respuestas

  • hola

    no evaluaste crear un link server ? sql server permite linkear contra otros motores de base de datos y asi crear queries uniendo ambas

    de esta forma podrias crear una view que usar en el codigo

    Create a linked server to MySQL from SQL Server

     Create A Linked MySQL To SQL Server

    esto haria el codigo mucho mas simple, ya que te conectas unicamente a sql server y desde este accedes a ambas dbs

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Ruben Lezcano martes, 6 de febrero de 2018 9:26
    lunes, 5 de febrero de 2018 18:04
  • ruben

    en lo que expones es leer de sqlServer si es mysql debe ser..

    string connStr = "server=server;user=user;database=db;password=*****;";
                MySqlConnection conn = new MySqlConnection(connStr);
                conn.Open();
    
                string sql = "SELECT this FROM that";
                MySqlCommand cmd = new MySqlCommand(sql, conn);
                using (MySqlDataReader rdr = cmd.ExecuteReader()) {
                    while (rdr.Read()) {
    //aca leer o si vas hacer otro operacion cambia el DataReader por otro
    recuerda que debes colocar el using de mySql

    lunes, 5 de febrero de 2018 18:07
  • Muchas Gracias 

    estaba leyendo esta bueno lo probare

    saludos


    ruben

    martes, 6 de febrero de 2018 9:26