elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: [1]
1  Programación / .NET (C#, VB.NET, ASP) / datasets en c# me dan problemas en: 27 Mayo 2015, 18:09 pm
Muy buenas, espero conseguir explicar mi problema porque ya van 2 días trabajando con esto y no consigo entenderlo:



tengo un dataset que recoge los datos de una base de datos, ese dataset lo convierto en un datatable y se lo paso a un gridview



pass = pasarTabla1.Tables[0];



 dataListado.DataSource = OShare.pass;





bien, ahora según entiendo ahí creo una conexión entre los dos ¿no? si cambio algo en el datagridview pasarTabla1 recibira el cambio y si cambio algo en pasarTabla1 el datagridview recibe el cambio aunque yo no ponga nada por ningún lado (al menos es lo que yo entiendo que está ocurriendo ya que solo le asigno "pasarTabla1" a "Pass" al principio pero cada vez que algo cambia este cambia en mi datagridview).







después necesito agregar a esa base de datos cosas de otra base de datos, probé a usar ".merge" pero lo único que consigo es que se agregue todo lo de la segunda base de datos a la primera de manera infinita cada vez que le doy al botón, se supone que es porque el número de columnas de la segunda tabla no coincide con el de la primera, así que probe a hacer esto:





Código:
DataSet copy = new DataSet();           
 copy = pasarTabla1;      
      copy.Merge(pasarTabla2, false, MissingSchemaAction.Ignore);          

 copy.AcceptChanges();    
        pasarTabla1.Merge(copy,false);






primero comparo copy con pasarTabla2 que es la que tiene los datos que quiero agregar, (en ese punto se agregan los datos directamente a mi datagridview y no entiendo porqué ya que según había entendido datagridview estaba conectado con pasarTabla1 y eso es una copia!), después aprovechando que ahora copy y pasarTabla1 tienen el mismo formato los vuelvo a comparar para descartar las  igualdades pero lejos de darme las diferencias solo me agrega a la tabla lo que tiene "pasarTabla2" esté repetido o no, y una vez mas no consigo entender porqué , os pongo unas imaganes:

ya he cogido los datos de la segunda base de datos y la he guardado en la primera(son los 4 ultimos):



http://s23.postimg.org/vzkb3yk0b/image.jpg



si le vuelvo a dar al boton ese merge me devuelve solo los datos de la segunda tabla, estén ya en la primera o no, y lo hace de manera infinita:



http://s18.postimg.org/q1ynm2c9l/image.jpg





y al hacer el update de la base de datos esta intenta actualizar TODOS los datos (incluidos los que están repetidos varias veces, me guarda los que no,pero es un proceso lento en el que pierde el tiempo tratando de meter muchos datos que ya tiene)


Código:
 try      {     cmdBuilder = new SqlCommandBuilder(adapter);      

                  cmdBuilder.GetUpdateCommand();                

       changes = ds.GetChanges();                    

   if (changes != null)                        {  

                         try                          

  {                                adapter.ContinueUpdateOnError = true;

                               adapter.Update(changes);                

               Console.WriteLine("Changes DoOoOoOoOoOoOoOOOOOOOOOOOOOOOOOOOOOOOONE");  

                         }                            catch (Exception ex)                            {

                               Console.WriteLine(ex.ToString());                            }                        }                    }                    catch (Exception ex)                    {                                   }





ya no sé que mas hacer,llevo 2 días rompiendome la cabeza con esto y he llegado a la tercera pagina de google, espero que alguien pueda ayudarme a entender y solucionarlo
2  Programación / .NET (C#, VB.NET, ASP) / ¿Como crear variables en C# que coincidan con las variables de un servidor sql? en: 22 Mayo 2015, 13:15 pm
Buenas chavales, he hecho un programa con una base de datos en sql server, a través del cual se puede actualizar el contenido de la base de datos añadiendo o modificando lo que ya tiene,el problema es que me gustaría que mi programa funcionará en cualquier base de datos.Tal y como lo tengo ahora he predefinido las variables tanto en el servidor como en el programa así que solo podré manipular una base de datos que tenga esas variables.

¿Hay alguna manera de leer la base de datos y crear sus respectivas variables en el programa automaticamente? ni siquiera sé si es posible
3  Programación / .NET (C#, VB.NET, ASP) / hacer que un programa basado en archivos de texto funcione solo con strings en: 19 Mayo 2015, 15:22 pm
Muy buenas! tengo una cosa que me está dando mucho quebradero de cabeza, os comento:

Tengo un programilla en visual studio funcionando que coge datos de 2 bases de datos,las convierte en archivos en xml,las compara y por ultimo las sincroniza, funciona perfectamente pero ahora quisiera hacer lo mismo pero sin crear ningún archivo, que todo el proceso ocurra internamente en el programa, os paso el código que tengo del programa funcionando (del método que hace todo el proceso de xml), y el código del nuevo, el problema ahora mismo me salta a la hora de comparar los dos strings y no descarto que lo que viene luego tampoco vaya a funcionar:



PROGRAMA FUNCIONANDO:

Código
  1.  
  2.  
  3.  
  4.  
  5.  
  6.        public static void CompareXml()
  7.        {
  8.  
  9.  
  10.            XmlWriter writexml;
  11.  
  12.  
  13.  
  14.                writexml = XmlWriter.Create("C:\\sharecompare.xml");
  15.  
  16.  
  17.            string xmlString1 = "C:\\share2Copy.xml";
  18.            string xmlString2 = "C:\\share1.xml";
  19.            string xmlString3 = "C:\\sharecomparefinal.xml";
  20.            string xmlString4 = "C:\\sharecompare.xml";
  21.  
  22.  
  23.  
  24.            XmlDiff xmldiff = new XmlDiff(XmlDiffOptions.IgnoreChildOrder |
  25.                                             XmlDiffOptions.IgnoreNamespaces |
  26.                                             XmlDiffOptions.IgnorePrefixes);
  27.            bool bIdentical = xmldiff.Compare(xmlString2, xmlString1, false, writexml);
  28.  
  29.  
  30.            writexml.Close();
  31.  
  32.            FileStream patchedFile = new FileStream(xmlString3, FileMode.Create, FileAccess.Write);
  33.  
  34.            XmlPatch xmlPatch = new XmlPatch();
  35.  
  36.  
  37.            try
  38.            {
  39.              //  XmlTextReader diffgramReader = new XmlTextReader("C:\\sharecompare.xml");
  40.               // xmlpatch.Patch(sourceDoc, diffgramReader);
  41.                xmlPatch.Patch(new XmlTextReader(xmlString2), patchedFile, new XmlTextReader(xmlString4));
  42.  
  43.  
  44.            }
  45.            catch (Exception ex)
  46.            {
  47.                Console.WriteLine("HA habido un ERROR: "+ex.Message);
  48.  
  49.            }
  50.  
  51.            patchedFile.Close();
  52.            Console.WriteLine("The patched document or fragment has been saved to " + xmlString3);
  53.  
  54.        }
  55.  
  56.  
  57.  






INTENTO CONVERTIRLO EN UN PROGRAMA QUE FUNCIONE SIN CREAR ARCHIVOS. xml1 y xml2 son strings y cogen bien el xml de las bases de datos,el problema viene a la hora de intentar comparar los dos strings y sacar un tercer string con el resultado en formato xml:




Código
  1. public static void CompareXml()
  2.        {
  3.            DShare Obj=new DShare();
  4.  
  5.            XmlWriter writexml;
  6.  
  7.            StringWriter sw = new StringWriter();
  8.  
  9.  
  10.  
  11.  
  12.            writexml = XmlWriter.Create(sw);
  13.  
  14.  
  15.            string xmlString1 = Obj.Xml2;
  16.            string xmlString2 = Obj.Xml1;
  17.            string xmlString3 = Obj.Xmlfinal;
  18.            string xmlString4 = sw.ToString();
  19.  
  20.  
  21.            string str = sw.ToString();//
  22.  
  23.  
  24.  
  25.            XmlDiff xmldiff = new XmlDiff(XmlDiffOptions.IgnoreChildOrder |
  26.                                             XmlDiffOptions.IgnoreNamespaces |
  27.                                             XmlDiffOptions.IgnorePrefixes);
  28.            bool bIdentical = xmldiff.Compare(xmlString2, xmlString1, false, writexml);
  29.  
  30.  
  31.            writexml.Close();
  32.  
  33.            MemoryStream ms = new MemoryStream(System.Text.Encoding.ASCII.GetBytes(xmlString3));
  34.            //FileStream patchedFile = new FileStream(xmlString3, FileMode.Create, FileAccess.Write);
  35.  
  36.            XmlPatch xmlPatch = new XmlPatch();
  37.  
  38.  
  39.            try
  40.            {
  41.                //  XmlTextReader diffgramReader = new XmlTextReader("C:\\sharecompare.xml");
  42.                // xmlpatch.Patch(sourceDoc, diffgramReader);
  43.                xmlPatch.Patch(new XmlTextReader(xmlString2), ms, new XmlTextReader(xmlString4));
  44.  
  45.  
  46.            }
  47.            catch (Exception ex)
  48.            {
  49.                Console.WriteLine("HA habido un ERROR: " + ex.Message);
  50.  
  51.            }
  52.  
  53.            ms.Close();
  54.           // patchedFile.Close();
  55.  
  56.            Console.WriteLine("The patched document or fragment has been saved to " + xmlString3);
  57.        }
  58.  
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines