none
Insertar Datos en una DB RRS feed

  • Pregunta

  • Hola, estoy tratando de insertar datos a una bd a través de un form. El botón al hacer clic no me arroja ningún error, pero tampoco me agrega el registro en la BD.

     Public Sub InsertarContacto(Datos As EntidadContacto)
    
            Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings("Agenda").ToString())
                cn.Open()
    
                Dim cmd As New SqlCommand("sp_Contactos_Add", cn)
    
                cmd.CommandType = CommandType.StoredProcedure
    
                cmd.Parameters.AddWithValue("@id", Datos.ID)
                cmd.Parameters.AddWithValue("@Nombre", Datos.Nombre)
                cmd.Parameters.AddWithValue("@Apellido", Datos.Apellido)
                cmd.Parameters.AddWithValue("@Mail", Datos.Mail)
                cmd.Parameters.AddWithValue("@Casa", Datos.Casa)
                cmd.Parameters.AddWithValue("@Celular", Datos.Celular)
    
    
                cmd.ExecuteNonQuery()
    
            End Using

    El código del botón:

    Private Sub btnAgregar_Click(sender As System.Object, e As System.EventArgs) Handles btnAgregar.Click
            Dim oNegocios As New EntidadContacto
    
            oNegocios.ID = txtID.Text
            oNegocios.Nombre = txtNombre.Text
            oNegocios.Apellido = txtApellido.Text
            oNegocios.Mail = txtMail.Text
            oNegocios.Casa = txtCasa.Text
            oNegocios.Celular = txtCelular.Text
            ContactosFUN.InsertarContacto(oNegocios)
    
        End Sub

    Gracias


    viernes, 2 de noviembre de 2012 16:27

Respuestas

  • El problema puede ser por la bd por lo que mencionas la tienes dentro del proyecto entonces cada vez que compilas el proyecto los datos que has insertado se pierden porque la bd cada vez se copia a la carpeta debug.

    Lo que puedes hacer es quitar la bd del proyecto cuando se esta desarrollando no es bueno tenerla dentro del proyecto mejor adjuntala al magnament studio para que la trabaje de forma local y tendrias que cambiar la cadena de conexión por una similar a esta.

    connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=NombreBD;Integrated Security=True"

    Saludos.


    Cristian Torres
    Blog Cristian Torres

    El Salvador - San Salvador

    • Marcado como respuesta WFgo viernes, 2 de noviembre de 2012 18:14
    viernes, 2 de noviembre de 2012 17:40
  • Leandro: La BD la tengo como .mdf en el solution explorer.

    busca la db en la carpata \bin\Debug alli el VS crea una copia cada vez que compilas

    esto sucede solo cuando ejecutas desde el VS cuando ejecutes desde el .exe no pasara

    seguro en el conectionstring usas el DataDirectory, ese apunta a donde esta el .exe por eso  \bin\Debug

    si habilitas en el server explorer el mdf que esta en  \bin\Debug seguro alli veras los registros que se crearon

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta WFgo viernes, 2 de noviembre de 2012 18:14
    viernes, 2 de noviembre de 2012 17:52

Todas las respuestas

  • hola

    has probado ejecutar el procedure desde el sql server mangement studio para validar que verdaderamente inserte donde debe ?

    el codigo que muestra esta correcto, por eso habria que validad el procedure

    la db esta adjunta el servicio de sql server, o lo tienes como archivo .mdf en el solution explorer ?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 2 de noviembre de 2012 16:42
  • Y si pones un BreackPoint y presionas F11 para ir siguiendo el flujo, para ver si las propiedades se llenan y si realmente se asignan a la coleccion de parametros.

    Saludos desde Monterrey, Nuevo León, México!!!


    viernes, 2 de noviembre de 2012 16:42
  • Hola:

    Dos cosillas: 1) Repasa bien el store procedure y 2) Inserta un bloque Try Catch a ver si te indica alguna cosa.

    Un saludo.

    Gemma.

    viernes, 2 de noviembre de 2012 16:43
  • Leandro: La BD la tengo como .mdf en el solution explorer.

    Gemma: Coloque el try catch y no me arroja nada..  Es que al apretar el Boton de "Agregar" no aparece ningun error, es como si se ejecuta correctamente pero no me agrega nada.

    El SP es basico de insertar.. Aqui se los dejo:

    ALTER PROCEDURE dbo.sp_Contactos_Add
    (
    @id int,
    @Nombre varchar(15),
    @Apellido varchar(15),
    @Mail varchar(30),
    @Casa int,
    @Celular int)
    as
    insert into Contactos
    values
    (
    @id,
    @Nombre,
    @Apellido,
    @Mail,
    @Casa,
    @Celular)
    

    Gracias

    viernes, 2 de noviembre de 2012 16:54
  • El problema puede ser por la bd por lo que mencionas la tienes dentro del proyecto entonces cada vez que compilas el proyecto los datos que has insertado se pierden porque la bd cada vez se copia a la carpeta debug.

    Lo que puedes hacer es quitar la bd del proyecto cuando se esta desarrollando no es bueno tenerla dentro del proyecto mejor adjuntala al magnament studio para que la trabaje de forma local y tendrias que cambiar la cadena de conexión por una similar a esta.

    connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=NombreBD;Integrated Security=True"

    Saludos.


    Cristian Torres
    Blog Cristian Torres

    El Salvador - San Salvador

    • Marcado como respuesta WFgo viernes, 2 de noviembre de 2012 18:14
    viernes, 2 de noviembre de 2012 17:40
  • Leandro: La BD la tengo como .mdf en el solution explorer.

    busca la db en la carpata \bin\Debug alli el VS crea una copia cada vez que compilas

    esto sucede solo cuando ejecutas desde el VS cuando ejecutes desde el .exe no pasara

    seguro en el conectionstring usas el DataDirectory, ese apunta a donde esta el .exe por eso  \bin\Debug

    si habilitas en el server explorer el mdf que esta en  \bin\Debug seguro alli veras los registros que se crearon

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta WFgo viernes, 2 de noviembre de 2012 18:14
    viernes, 2 de noviembre de 2012 17:52
  • Cristian, me funciono correctamente.. Te agradezco. Tengo otra duda.. si yo quiero hacer, al terminar el proyecto un instalador.. la BD la tengo que colocar como de servicio, en .mdf como antes? Ahí no va a volver a pasar esto no ? Gracias!!
    viernes, 2 de noviembre de 2012 17:53
  • la BD la tengo que colocar como de servicio, en .mdf como antes? Ahí no va a volver a pasar esto no ?

    no necesitas hacer esto

    puedes poner el path completo en el connection string al mdf que esta en el proyecto

    o sea no uses el DataDirectory sino define la ruta completa al mdf y listo, no tienes que adjuntar la db al servicio de sql server

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 2 de noviembre de 2012 18:09
  • ok, muchas gracias! Mi duda era si cuando creaba el exe iba a pasar esto al estar el .mdf en el proyecto. Gracias!
    viernes, 2 de noviembre de 2012 18:15