• Domingo 22 de Diciembre de 2024, 13:22

Autor Tema:  Insertar Registro Con Oledb  (Leído 2378 veces)

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Insertar Registro Con Oledb
« en: Jueves 31 de Agosto de 2006, 14:20 »
0
Ya pude leer todos los registros de una tabla y mostrarlos en un txt, lo que no logro hacer es agragar un registro. No me tira error, pero no agraga nada.
El código que uso es masomenos este: (no lo tengo a mano)
Código: Text
  1.  
  2. OleDBConnection Conection = new OleDBConnection(cadenaConexion);
  3. //se conecta bien, segurisimo, ese no es el problema
  4. OleDBDataAdapter Adapter = new OleDBDataAdapter("SELECT * FROM tabla", Connection);
  5. DataSet dataSet = new DataSet();
  6. Adapter.Fill(dataSet, "tabla");
  7. //hasta ahora todo bien, el data set se llena con registros bien , ya que los pude leer.
  8.  
  9. DataRow Row = new DataSet.Tables["tabla"].NewRow();
  10. //aqui lleno la Row con Datos
  11. Row["columna"] = "cadena"
  12. ......
  13. Los nombres de las columnas estan bien, de lo contrario tira error.
  14.  
  15. //luego anado la row a la tabla
  16. dataSet.Tables["tabla"].Rows.Add(Row);
  17. dataSet.AcceptChanges();
  18.  
  19. //еsto es lo que creo que falla
  20.  
  21. Adapter.Update(dataSet, "tabla");
  22.  
  23.  

Si esta mal el nombre de algun miembro, es porque no tengo el código a mano, y no me acuerdo bien....

Lo que no entiendo es porque no agraga el registro, busque codigos en internet y son maso menso parecidos por no decir idénticos. Algunos usan OleDBCommanBuilder, pero ya probé con el y tuve el mismo resultado.
Creo que me falta cambiar  Adapter.UpdateCommand o Adapter.InsertCommand...

Lo que quisiera saber es alguna manera facil de insertar un registro en una tabla donde la Conexion, el Adaptador, y el dataSet lo creo con código en tiempo de ejecucion.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Insertar Registro Con Oledb
« Respuesta #1 en: Viernes 1 de Septiembre de 2006, 15:19 »
0
Sigo sin poder insertar un registro en una tabla de access :(

¿Se puede hacer eso con OleDB? ¿Alguno lo hizo, como?

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Insertar Registro Con Oledb
« Respuesta #2 en: Viernes 1 de Septiembre de 2006, 16:39 »
0
Yo lo hice hace 2 meses, y muy similar a como lo tienes.

Da algun tipo de error o excecion??

Antes de que llame a update paralo y mira que realmente se halla añadido la nueva fila al dataset. Tambien puedes chequear que el update devuelva un entero en ese caso 1 ( 1 operacion con una fila)

Tambien puedes probar a lanzar el update solamente con el dataset como argumento, sin indicar la tabla.A ver si asi te funciona

Otra cosa que revisaria seria lo de acceder al vector de tablas del dataset por el nombre de la tabla, prueba con Tables[indiceTabla]

salu2

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Insertar Registro Con Oledb
« Respuesta #3 en: Viernes 1 de Septiembre de 2006, 16:47 »
0
No me lanza error, lo hacía cuando no usaba dataSet.AcceptChanges();

Citar
Tambien puedes probar a lanzar el update solamente con el dataset como argumento, sin indicar la tabla.A ver si asi te funciona
Si pongo solo el dataSet como parametro, lanza error en tiempo de ejecucion, no me acuerdo cual.

Si dices que de esa forma te funciono voy a ver que pasa, por lo menso se que estoy en un camino correcto

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Insertar Registro Con Oledb
« Respuesta #4 en: Viernes 1 de Septiembre de 2006, 22:53 »
0
Ya solucioné el problema.
Había que usar además el OleDbCommandBuilder y sacar la linea dataSet.AccpetChanges();

Otra pregunta, es correcto usar Dispose() en un bloque try?
Código: Text
  1.  
  2. private void ViewPasses(string query)
  3.         {
  4.             OleDbConnection connection;
  5.             OleDbDataAdapter adapter;
  6.             DataSet dataSet = new DataSet();
  7.             connection = new OleDbConnection();
  8.             connection.ConnectionString = Program.ConnectionString + Program.MainPass;
  9.             try
  10.             {
  11.                 connection.Open();
  12.                 Adapter = new OleDbDataAdapter(query, connection);
  13.                 Adapter.Fill(DataSource, "passes");
  14.                 foreach (DataRow Row in DataSource.Tables["passes"].Rows)
  15.                 {
  16.                     textBoxPass.Text += Row["category"] + "\r\n";
  17.                     textBoxPass.Text += Row["page"];
  18.                     textBoxPass.Text += "\r\n";
  19.  
  20.                     textBoxPass.Text += "User: " + Row["user"] + "\r\n";
  21.                     textBoxPass.Text += "Pass: " + Row["pass"] + "\r\n";
  22.                     textBoxPass.Text += "\r\n";
  23.                 }
  24.             }
  25.             finally
  26.             {
  27.                 connection.Close();
  28.                 adapter.Dispose();
  29.                 connection.Dispose();
  30.                 dataSet.Dispose();
  31.             }
  32.         }
  33.  
  34.  

hellscream

  • Miembro activo
  • **
  • Mensajes: 95
    • Ver Perfil
Re: Insertar Registro Con Oledb
« Respuesta #5 en: Lunes 4 de Septiembre de 2006, 16:27 »
0
Citar
Otra pregunta, es correcto usar Dispose() en un bloque try?
si, aunque seria mejor usar using

por otro lado, sería mejor que sólo uses un DataReader para el ejemplo que pones, no hay necesidad de crear un DataSet...