CLR: .Net / Mono / Boo / Otros CLR > C#
Insertar Registro Con Oledb
Enko:
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 --- OleDBConnection Conection = new OleDBConnection(cadenaConexion);//se conecta bien, segurisimo, ese no es el problemaOleDBDataAdapter Adapter = new OleDBDataAdapter("SELECT * FROM tabla", Connection);DataSet dataSet = new DataSet();Adapter.Fill(dataSet, "tabla");//hasta ahora todo bien, el data set se llena con registros bien , ya que los pude leer. DataRow Row = new DataSet.Tables["tabla"].NewRow();//aqui lleno la Row con DatosRow["columna"] = "cadena"......Los nombres de las columnas estan bien, de lo contrario tira error. //luego anado la row a la tabladataSet.Tables["tabla"].Rows.Add(Row);dataSet.AcceptChanges(); //еsto es lo que creo que falla Adapter.Update(dataSet, "tabla");
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:
Sigo sin poder insertar un registro en una tabla de access :(
¿Se puede hacer eso con OleDB? ¿Alguno lo hizo, como?
Diodo:
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:
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
--- Fin de la cita ---
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:
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 --- private void ViewPasses(string query) { OleDbConnection connection; OleDbDataAdapter adapter; DataSet dataSet = new DataSet(); connection = new OleDbConnection(); connection.ConnectionString = Program.ConnectionString + Program.MainPass; try { connection.Open(); Adapter = new OleDbDataAdapter(query, connection); Adapter.Fill(DataSource, "passes"); foreach (DataRow Row in DataSource.Tables["passes"].Rows) { textBoxPass.Text += Row["category"] + "\r\n"; textBoxPass.Text += Row["page"]; textBoxPass.Text += "\r\n"; textBoxPass.Text += "User: " + Row["user"] + "\r\n"; textBoxPass.Text += "Pass: " + Row["pass"] + "\r\n"; textBoxPass.Text += "\r\n"; } } finally { connection.Close(); adapter.Dispose(); connection.Dispose(); dataSet.Dispose(); } }
Navegación
[#] Página Siguiente
Ir a la versión completa