none
insertar registros en una base de datos RRS feed

  • Pregunta

  • traigo presenta el problema de no insertar los registros me da este error que los adjunto y sus anexos el formulario que hay que poner y el error que genera

    Public Class Form1

        Private Property anders As String

        Private Property Sql As String

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            conectarse()
            'llenagrid()

        End Sub


       
        Private Sub btninsertar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btninsertar.Click

            If (Me.Txtidentificacion.Text = "") Then
                MsgBox("el campo identificacion no puede estar vacio", MsgBoxStyle.Critical, "Atencion")
                Me.Txtidentificacion.Select()
            Else
                Dim identificacion As Integer
                Dim nombres As String = ""
                Dim apellidos As String = ""
                Dim correo As String = ""
                Dim direccion As String = ""

                identificacion = Me.Txtidentificacion.Text
                nombres = Me.Txtnombres.Text
                apellidos = Me.Txtapellidos.Text
                correo = Me.Txtcorreo.Text
                direccion = Me.Txtdireccion.Text

                cmd.CommandType = CommandType.Text
                cmd.Connection = conn

                Sql = "INSERT INTO PERRSONA (IDPERSONA, NOMBRES, APELLIDOS, CORREO, DIRECCION  )"

                Sql = "VALUES (" & identificacion & ",'" & nombres & "','" & apellidos & "','" & correo & "',"

                Sql += "'" & direccion & "')"



                cmd.CommandText = Sql

                Try
                    cmd.ExecuteNonQuery()
                    MsgBox("registro insert correctamente")
                Catch ex As Exception
                    If ex.ToString.Contains("DELETE ,INSERT, PROCEDURE, SELECT o UPDATE") Then
                        MsgBox("el registro ya existe en la base de datos ")
                    Else

                        MsgBox(ex.ToString)
                    End If
                     End Try










            End If
        End Sub

    End Class

    >>


    cesar gomez

    martes, 31 de diciembre de 2019 12:00

Todas las respuestas

  • Hola, te recomendaría utilizar parámetros

       Private Sub btninsertar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btninsertar.Click
    
            If (Me.Txtidentificacion.Text = "") Then
                MsgBox("el campo identificacion no puede estar vacio", MsgBoxStyle.Critical, "Atencion")
                Me.Txtidentificacion.Select()
            Else
                Dim identificacion As Integer
                Dim nombres As String = ""
                Dim apellidos As String = ""
                Dim correo As String = ""
                Dim direccion As String = ""
    
                identificacion = Me.Txtidentificacion.Text
                nombres = Me.Txtnombres.Text
                apellidos = Me.Txtapellidos.Text
                correo = Me.Txtcorreo.Text
                direccion = Me.Txtdireccion.Text
    			
    	    cmd.CommandType = CommandType.Text
                cmd.Connection = conn
    
               Sql = "INSERT INTO PERRSONA (IDPERSONA, NOMBRES, APELLIDOS, CORREO, DIRECCION  ) VALUES (@IDPERSONA,@NOMBRES,@APELLIDOS,@CORREO,@DIRECCION)"
    		   cmd.Parameters.AddWithValue("@IDPERSONA",Convert.ToInt32(identificacion))
    		   cmd.Parameters.AddWithValue("@NOMBRES",nombres)
    		   cmd.Parameters.AddWithValue("@APELLIDOS",apellidos)
    		   cmd.Parameters.AddWithValue("@CORREO",correo)
    		   cmd.Parameters.AddWithValue("@DIRECCION",direccion)
    
                cmd.CommandText = Sql
             Try
                    cmd.ExecuteNonQuery()
                    MsgBox("registro insert correctamente")
                Catch ex As Exception
                    If ex.ToString.Contains("DELETE ,INSERT, PROCEDURE, SELECT o UPDATE") Then
                        MsgBox("el registro ya existe en la base de datos ")
                    Else
    
                        MsgBox(ex.ToString)
                    End If
            End Try
    
            End If
    		
        End Sub


    Votar y marcar respuestas es agradecer.
    Saludos.
    Lima-Perú



    • Editado Augusto1982 martes, 31 de diciembre de 2019 13:11
    martes, 31 de diciembre de 2019 13:11
  • Hola, te recomendaría utilizar parámetros

       Private Sub btninsertar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btninsertar.Click
    
            If (Me.Txtidentificacion.Text = "") Then
                MsgBox("el campo identificacion no puede estar vacio", MsgBoxStyle.Critical, "Atencion")
                Me.Txtidentificacion.Select()
            Else
                Dim identificacion As Integer
                Dim nombres As String = ""
                Dim apellidos As String = ""
                Dim correo As String = ""
                Dim direccion As String = ""
    
                identificacion = Me.Txtidentificacion.Text
                nombres = Me.Txtnombres.Text
                apellidos = Me.Txtapellidos.Text
                correo = Me.Txtcorreo.Text
                direccion = Me.Txtdireccion.Text
    			
    	    cmd.CommandType = CommandType.Text
                cmd.Connection = conn
    
               Sql = "INSERT INTO PERRSONA (IDPERSONA, NOMBRES, APELLIDOS, CORREO, DIRECCION  ) VALUES (@IDPERSONA,@NOMBRES,@APELLIDOS,@CORREO,@DIRECCION)"
    		   cmd.Parameters.AddWithValue("@IDPERSONA",Convert.ToInt32(identificacion))
    		   cmd.Parameters.AddWithValue("@NOMBRES",nombres)
    		   cmd.Parameters.AddWithValue("@APELLIDOS",apellidos)
    		   cmd.Parameters.AddWithValue("@CORREO",correo)
    		   cmd.Parameters.AddWithValue("@DIRECCION",direccion)
    
                cmd.CommandText = Sql
             Try
                    cmd.ExecuteNonQuery()
                    MsgBox("registro insert correctamente")
                Catch ex As Exception
                    If ex.ToString.Contains("DELETE ,INSERT, PROCEDURE, SELECT o UPDATE") Then
                        MsgBox("el registro ya existe en la base de datos ")
                    Else
    
                        MsgBox(ex.ToString)
                    End If
            End Try
    
            End If
    		
        End Sub


    Votar y marcar respuestas es agradecer.
    Saludos.
    Lima-Perú



    Con la linea marcada debe funcionar o debo repartir esto en todad las demas lineas 

    INSERT INTO PERRSONA (IDPERSONA, NOMBRES, APELLIDOS, CORREO, DIRECCION  ) VALUES (@IDPERSONA,@NOMBRES,@APELLIDOS,@CORREO,@DIRECCION)"
    		   cmd.Parameters.AddWithValue("@IDPERSONA",Convert.ToInt32(identificacion))
    		   

    el resto de lineas

    cmd.Parameters.AddWithValue("@NOMBRES",nombres)

    "@apellidos",Convert.ToInt32(identificacion))

    y demas ????? cmd.Parameters.AddWithValue("@APELLIDOS",apellidos) cmd.Parameters.AddWithValue("@CORREO",correo) cmd.Parameters.AddWithValue("@DIRECCION",direccion)

    o el codigo ya esta listo para usar ???


    cesar gomez


    martes, 31 de diciembre de 2019 16:06
  • Hola, el código ya esta listo para usar , por que te marca algún error?

    lo hice a mano alzada, debería funcionar.


    Votar y marcar respuestas es agradecer.
    Saludos.
    Lima-Perú

    martes, 31 de diciembre de 2019 16:22
  • Puesto que la pregunta está en "¿Dónde está el foro para...?, te indico que este tipo de pregunta tendría cabida en al menos tres foros:

    1. El foro de VB.NET puesto que ese es el lenguaje en el que se ha programado.
    2. El foro de Windows Forms puesto que ese es el tipo de aplicación que estás desarrollando
    3. El foro de ADO.NET puesto que afirmas que te sale el error al insertar en base de datos y ADO.NET es la tecnología que estás usando para grabar los datos.

    Sin embargo, y a la vista del error que te sale, el foro más apropiado de los tres sería el de VB.NET, puesto que el error se debe al mal uso de las variables en dicho lenguaje. En particular, el problema es que has declarado la variable identificación con el tipo Integer, pero le estás intentando meter el valor "cesar" que no es un Integer. Este tipo de cuestiones es apropiado para el foro de vb: https://social.msdn.microsoft.com/Forums/es-ES/home?forum=vbes

    martes, 31 de diciembre de 2019 18:40
  • al amigo de peru ME DA EL MISMO ERROR EN ESTA linea 

       identificacion = Me.Txtidentificacion.Text
     nombres = Me.Txtnombres.Text
                apellidos = Me.Txtapellidos.Text
                correo = Me.Txtcorreo.Text
                direccion = Me.Txtdireccion.Text

                identificacion = Me.Txtidentificacion.Text
                identificacion = Me.Txtidentificacion.Text

    este es un comentario que me hicieron 

    el problema es que has declarado la variable identificación con el tipo Integer, pero le estás intentando meter el valor "cesar" que no es un Integer. Este tipo de cuestiones es apropiado para el foro de vb:


    cesar gomez


    martes, 31 de diciembre de 2019 19:39
  • ahora da el error de que al marcar insertar dice que no puede encontrar personas pereo asi se lllama mi base de datos ahi esta lo que dijo el informe de la ejecucion 

    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\Users\Cesar\Documents\Visual Studio 2010\Projects vb2010\data1234\data1234\bin\Debug\data1234.vshost.exe', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Deployment\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Deployment.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml.Linq\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.Linq.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Data.DataSetExtensions\v4.0_4.0.0.0__b77a5c561934e089\System.Data.DataSetExtensions.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Microsoft.VisualBasic\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualBasic.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    El subproceso 'vshost.NotifyLoad' (0x26f4) terminó con código 0 (0x0).
    El subproceso '<Sin nombre>' (0x12e0) terminó con código 0 (0x0).
    El subproceso 'vshost.LoadReference' (0x2b44) terminó con código 0 (0x0).
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\Users\Cesar\Documents\Visual Studio 2010\Projects vb2010\data1234\data1234\bin\Debug\data1234.exe', símbolos cargados.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Accessibility\v4.0_4.0.0.0__b03f5f7f11d50a3a\Accessibility.dll'
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Remoting\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Remoting.dll'
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Data.resources\v4.0_4.0.0.0_es_b77a5c561934e089\System.Data.resources.dll'
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\System.Transactions\v4.0_4.0.0.0__b77a5c561934e089\System.Transactions.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\System.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\System.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.Wrapper.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Solo mi código'.
    Excepción del tipo 'System.Data.OleDb.OleDbException' en System.Data.dll
    'data1234.vshost.exe' (Administrado (v4.0.30319)): se cargó 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\mscorlib.resources\v4.0_4.0.0.0_es_b77a5c561934e089\mscorlib.resources.dll'
    El subproceso 'vshost.RunParkingWindow' (0x17d0) terminó con código 0 (0x0).
    El subproceso '<Sin nombre>' (0x2088) terminó con código 0 (0x0).
    El programa '[9352] data1234.vshost.exe: Administrado (v4.0.30319)' terminó con código 0 (0x0).


    cesar gomez

    martes, 31 de diciembre de 2019 20:01
  • ahora da el error de que al marcar insertar dice que no puede encontrar personas pereo asi se lllama mi base de datos ahi esta lo que dijo el informe de la ejecucion [...]

    No, a estos efectos el informe de la ejecución no nos aporta ningún dato relevante. El problema podría encontrarse en uno de estos sitios:

    a) En la cadena de conexión, que es la que llega dentro de tu variable "conn". Podría contener un valor incorrecto, pero en el código aportado no podemos ver cuál es el valor que le cargas a esa variable. Si el problema estuviese aquí, el foro adecuado para este tipo de pregunta sería el de ADO.NET.

    b) En la configuración del servidor de base de datos. Aunque la cadena de conexión fuese correcta, el servidor podría ser inalcanzable, o no no tener permisos para esa base de datos,  o muchas otras cosas. Si el problema estuviese aquí, el foro adecuado sería el de SQL Server.

    Añado a lo anterior una observación que es importante cuando preguntes en los foros: No digas "da un error que dice que...". Copia siempre el mensaje completo, exacto y detallado del error que sale, transcribiéndolo literalmente palabra por palabra. La razón de esto es que al ver el mensaje exacto muchas veces es posible determinar cuál es la causa concreta, en lugar de tener que responder "podría ser a) o b)", porque algunas personas que participan en el foro tienen mucha experiencia y han visto los distintos errores anteriormente y pueden saber a qué se refiere al ver cómo está exactamente redactado el mensaje de error.

    miércoles, 1 de enero de 2020 8:05
  • al amigo de peru ME DA EL MISMO ERROR EN ESTA linea 

       identificacion = Me.Txtidentificacion.Text
     nombres = Me.Txtnombres.Text
                apellidos = Me.Txtapellidos.Text
                correo = Me.Txtcorreo.Text
                direccion = Me.Txtdireccion.Text

                identificacion = Me.Txtidentificacion.Text
                identificacion = Me.Txtidentificacion.Text

    este es un comentario que me hicieron 

    el problema es que has declarado la variable identificación con el tipo Integer, pero le estás intentando meter el valor "cesar" que no es un Integer. Este tipo de cuestiones es apropiado para el foro de vb:


    cesar gomez


    Hola es correcto si tratas de castear un valor de tipo cadena como "cesar" a int te arrojará ese error, fíjate que valor estas enviando a identificación desde tu interfaz de registro y valida si es el correcto.

    Votar y marcar respuestas es agradecer.
    Saludos.
    Lima-Perú

    jueves, 2 de enero de 2020 14:12