Foros del Web » Programación para mayores de 30 ;) » .NET »

Insert en forma conectada (sin dataset)

Estas en el tema de Insert en forma conectada (sin dataset) en el foro de .NET en Foros del Web. Hola, Estoy intentando aprender el manejo de bases de datos en .NET. Mi intencion es agregar un registro en forma conectada, es decir sin datasets ...
  #1 (permalink)  
Antiguo 25/11/2008, 20:43
 
Fecha de Ingreso: agosto-2002
Mensajes: 202
Antigüedad: 21 años, 8 meses
Puntos: 1
Insert en forma conectada (sin dataset)

Hola,

Estoy intentando aprender el manejo de bases de datos en .NET. Mi intencion es agregar un registro en forma conectada, es decir sin datasets ni datatables de por medio. Seria, de forma parecida a VB6, ejecutando un comando sobre una conexion.

Tengo una tabla llamada personas de dos campos, dni y nombre. Arme la connection string en My.Settings y luego en un formulario realice lo siguiente:


Código:
Public Class Form1

    Dim conexion As New OleDb.OleDbConnection(My.Settings.bdConnectionString)

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        conexion.Open()
        Dim cm As New OleDb.OleDbCommand("insert into personas (dni, nombre) values (1000000, 'Carlos')", conexion)

        Dim filas As Integer
        filas = cm.ExecuteNonQuery()
        MessageBox.Show(filas)

        conexion.Close()

    End Sub
End Class
Al hacer click en el boton deberia insertar el registro. El messagebox devuelve un 1, lo cual es esperado. Si presiono el boton nuevamente devuelve una excepcion ya que el campo dni es clave y lo esta insertando dos veces y tambien es esperado.

Sin embargo al cerrar el programa el registro no se agrega a la base de datos, tal como si en vez de hacerlo sobre la misma lo hubiera hecho sobre un dataset y luego no lo hubiera actualizado con el data adapter, aunque en este caso no hay ninguno de esos objetos.

¿Alguien sabe que es lo que esta mal? Tengo entendido que se puede hacer de esta manera, es decir ejecutar el command directamente sobre la conexion, pero no funciona.

Muchas gracias por cualquier respuesta.
__________________
Principio Legal Legalidad en la web y Directorio de Software Open Source
Pais Once El lugar donde descubrir una ciudad
  #2 (permalink)  
Antiguo 25/11/2008, 21:00
 
Fecha de Ingreso: julio-2008
Mensajes: 140
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Insert en forma conectada (sin dataset)

Si te tira el mensaje de que esta repetido el campo dni es porque ya insertó el registro en la base de datos. Sino, nunca te puede dar ese error.
  #3 (permalink)  
Antiguo 25/11/2008, 21:27
 
Fecha de Ingreso: agosto-2002
Mensajes: 202
Antigüedad: 21 años, 8 meses
Puntos: 1
Respuesta: Insert en forma conectada (sin dataset)

Hola Fueguino,

Gracias por tu respuesta, claro da ese mensaje, el messagebox muestra que inserta una fila y de alguna forma inserta el registro, pero al cerrar el programa la base de datos no lo tiene.

Si vuelvo a abrir el programa lo puedo volver a insertar una vez. Es decir es como si trabajara con una tabla en memoria en forma desconectada, pero sin ninguno de esos objetos, de hecho todo el codigo del programa es el que puse mas arriba, por eso no entiendo el resultado.
__________________
Principio Legal Legalidad en la web y Directorio de Software Open Source
Pais Once El lugar donde descubrir una ciudad
  #4 (permalink)  
Antiguo 26/11/2008, 05:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Insert en forma conectada (sin dataset)

La cosa peude estar o en la forma que estás usando la conexión, o bien en los valores por default del motor de la base de datos. ¿Qué estás usando?
* PostgreSQL
* MySQL
* Firebird
* SQLite
* DB2
* Microsoft SQL Server
* Sybase
* DB2 de IBM
* Access
* Oracle
* Paradox
* Progress
* Otra (¿cuál?)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 26/11/2008, 09:06
 
Fecha de Ingreso: agosto-2002
Mensajes: 202
Antigüedad: 21 años, 8 meses
Puntos: 1
Respuesta: Insert en forma conectada (sin dataset)

Hola gnzsoloyo,

La base de datos es access 2007. Ya encontre la solucion aunque todavia no entiendo cual es el problema. Yo la base de datos la habia agregado al proyecto a traves de "Origenes de datos", elegi tipo access y me pregunto si copiar la bd a la carpeta de la aplicacion y puse aceptar y tambien me agrego a My. settings la cadena de conexion.

Esto no solo copio la base de datos sino que creo una serie de archivos tales como "record locking information", datasets, etc en los directorios de la aplicacion. Por lo tanto si bien no especifico en el codigo ningun dataset ni base de datos en memoria de alguna forma se crean.

A mi me gustaria poder tener la bd en el explorador de soluciones para que sea parte del proyecto pero no entiendo porque haciendo esto no funciona de la manera esperada. Ahora borre desde el explorador de soluciones la bd, la copie a mano a la carpeta bin/debug y anda normalmente, aunque ya no es visible desde el explorador de soluciones.

Leo
__________________
Principio Legal Legalidad en la web y Directorio de Software Open Source
Pais Once El lugar donde descubrir una ciudad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:05.