Comunidad .NET de Cd. Juárez

Más que un foro virtual. Más que preguntas y respuestas. Somos una comunidad
que se ayuda para producir desarrolladores profesionales de alto rendimiento.
Welcome to Comunidad .NET de Cd. Juárez Sign in | Join | Help
in Search

Principiante en ADO.NET...

Last post 08-20-2009, 10:42 AM by el_guazu. 7 replies.
Sort Posts: Previous Next
  •  08-19-2009, 2:06 PM 2189

    Principiante en ADO.NET...

    Bien... comenzar'e a colocar los problemas y, si las encuentro, las respuestas a
    estos que se vayan presentando...

    Como actualizar una DB con un DataSet con datos modificados, utilizando SP con
    par'ametros:

    //================================
    //Suponiendo que ya tenemos el DataSet modificado mDs...

    string cString = @"Data Source=Server;Initial Catalog=dbDatabase;blablabla...";
    SqlConnection conn = new SqlConnection(cString);
    SqlCommand cmd = new SqlCommand("sp_spName", conn);

    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.Add("@param0", SqlDbType.Int);
    cmd.Parameters["@param0"].SourceColumn = mDs.Tables["tableName"].Columns["column0Name"].ColumnName;
    cmd.Parameters.Add("@param1", SqlDbType.Int);
    cmd.Parameters["@param1"].SourceColumn = mDs.Tables["tableName"].Columns["column1Name"].ColumnName;
    ...//Otros par'ametros...

    SqlDataAdapter adapter = new SqlDataAdapter();

    adapter.UpdateCommand = cmd; //Puede ser InsertCommand o DeleteCommand, seg'un se requiera...

    try{
    conn.Open();
    adapt.Update(mDs.Tables["tableName"]);
    }
    catch{
    MessageBox.Show("Vali'o webo, no se pudo...");
    }
    finally{
    conn.Close();
    }

    //================================

    Am... debo buscar si tengo que hacer un conn.Open() antes del adapt.Update(),
    o si el adaptador s'olo abre y cierra la conexi'on...
    Tambi'en tengo duda en para que sirve el @ antes de un string... sin el tambi'en
    funca, a ver que sale...


    Se vende agua deshidratada
  •  08-19-2009, 2:57 PM 2190 in reply to 2189

    Re: Principiante en ADO.NET...

    Okas... seg'un esto la @ se utiliza para no tener que usar caracteres de escape
    en las cadenas...

    Y, hasta ahora, todos los ejemplos de SqlDataAdapter.Update() abren la conexi'on
    antes de llamar esta funci'on...

    Se vende agua deshidratada
  •  08-19-2009, 4:03 PM 2191 in reply to 2190

    Re: Principiante en ADO.NET...

    así es, el @ en strings es para no tener que escapar los caracteres.  P. ejemplo, cuando quieres escribir un path, en lugar de poner:

    "C:\\mydir\\myfile.txt" pones @"C:\mydir\myfile.txt"

    En cuanto el data adapter. NO necesitas abrir la conexión.  El data adapter se encarga de abrirla, ejecutar los comandos apropiados de acuerdo al RowState y cerrar la conexión.

    Aquí está un post que escribí hace bastante rato.

    ADO.NET para novatos

    http://www.dotnetero.com/2006/08/adonet-para-novatos.html

    Espero te sirva


    Diario de un Dotnetero
  •  08-19-2009, 4:40 PM 2192 in reply to 2191

    Re: Principiante en ADO.NET...

    Jejeje el del porky y el speedy... ya me lo hab'ia chutado... Thks!

     

    En cuanto al Adapter... supongo que tiene raz'on...

    Para las transacciones, esas si deben estar dentro de la conexi'on abierta? y luego cerrarle
    despues del Commit/RollBack?


    Se vende agua deshidratada
  •  08-19-2009, 5:43 PM 2193 in reply to 2192

    Re: Principiante en ADO.NET...

    ¿Adatpers con transacciones?

    Típicamente si vas a usar transacciones no recomendaría ejecutar cosas con un DataAdapter, sino los comandos "a pata".

    Si te empeñas en usar Adapters, recomiendo mejor agregar handlers para los eventos cuando falla y cosas así.

    El cómo usas transacciones va a depender de si estás usando el SqlClient or el OracleClient.  Si no recuerdo mal, se registran los objetos de transacción de manera distinta, aunque muy parecida.

    Suponiendo que vas a usar SqlClient, un patrón podría ser:

    //declarar variables

    try {

    //Creas la conexion con un new SqlConnection

    //abres la conexion

    //creas la transaccion mediante conexion.BeginTransaction()

    //creas el comando mediante conexion.CreateCommand()

    //ejecutas el comando

    //creas otro comando usando la conexion

    //ejecutas comando

    //haces commit a la transaccion

    }

    catch  (SqlException) {

    //das rollback a la transaccion

    }

    finally {

    //cerrar conexion

    }


    Diario de un Dotnetero
  •  08-19-2009, 7:43 PM 2194 in reply to 2193

    Re: Principiante en ADO.NET...

    Interesante...

    y si tuviera que utilizar el Adapter por definición, que es como dicen los matemáticos
    cuando algo es de a webo, para actualizar/insertar/borrar datos en una tabla utilizando
    un DataSet que modifiqué en el programa, cuales eventos/handlers debería observar??

    Thks!


    Se vende agua deshidratada
  •  08-20-2009, 10:26 AM 2195 in reply to 2194

    Re: Principiante en ADO.NET...

  •  08-20-2009, 10:42 AM 2196 in reply to 2195

    Re: Principiante en ADO.NET...


    Jajajaajaa...

    Me interesó más el LMGTFY que la respuesta en sí... :P

    Wiiii! con esto aprendí a contestar preguntas tontas, como la mía... :P

    Gracias! :D

    Se vende agua deshidratada
View as RSS news feed in XML
Powered by Community Server (Personal Edition), by Telligent Systems