none
Insertar Datos de TextBox para BD SQL RRS feed

  • Pregunta

  • Hola, como están??

    Estoy intentando insertar, borrar, actualizar datos desde varios textbox hacia una base de datos de SQL.

    Partí de la base de este ejemplo:

    https://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldataadapter.insertcommand(v=vs.110).aspx

    Pero me estoy liando y no se como insertar datos nuevos, eliminar y enlazar si lo hice, pero insertar datos nuevos no.

    Mi codigo se a quedado estancado en este punto:

     

    Dim adapter As SqlDataAdapter = New SqlDataAdapter()

    Dim ID As Integer = ReaperTextbox6.Text Dim NOMBRE As String = ReaperTextbox1.Text Dim SEXO As String = ReaperTextbox2.Text Dim EDAD As String = ReaperTextbox3.Text Dim PESO As String = ReaperTextbox4.Text Dim ALTURA As String = ReaperTextbox5.Text Dim Command = New SqlCommand( _ "INSERT INTO Perfil (ID, Nombre, Sexo, Edad, Peso, Altura) " & _ "VALUES (" & ID & ",'" & NOMBRE & ",'" & SEXO & ",'" & EDAD & ",'" & PESO & ",'" & ALTURA, Me.PerfilTableAdapter.Connection) ' Add the parameters for the InsertCommand. Command.Parameters.Insert("@ID", SqlDbType.Int) Command.Parameters("@ID").Value = ID Command.Parameters.Insert("@Nombre", SqlDbType.NVarChar) Command.Parameters("@Nombre").Value = NOMBRE Command.Parameters.Insert("@Sexo", SqlDbType.NVarChar) Command.Parameters("@Sexo").Value = SEXO Command.Parameters.Insert("@Edad", SqlDbType.NVarChar) Command.Parameters("@Edad").Value = EDAD Command.Parameters.Insert("@Peso", SqlDbType.NVarChar) Command.Parameters("@Peso").Value = PESO Command.Parameters.Insert("@Altura", SqlDbType.NVarChar) Command.Parameters("@Altura").Value = ALTURA adapter.InsertCommand = Command

    Ahora mismo da error en la primera accion del primer parametro:

    La conversión de la cadena "@ID" en el tipo 'Integer' no es válida.


    davidd88



    • Editado davidd88 martes, 21 de julio de 2015 17:28 Add Error
    martes, 21 de julio de 2015 17:22

Respuestas

  • PASAR parametros concatenados en tu consulta esta mal es una Mala Praxis...siempre `por seguridad de tu aplicacion parametriza tus consultas

    fijate este ejemplo

    Dim SQL As String ="INSERT INTO SSOMENU2..InfoStatusRQ (solicitud,rq,statusRQ,reAsignadoA,fechaReAsig,motivoReAsig,userEntReAsig) VALUES (@solicitud,@rq,@statusRQ,@reAsignadoA,@fechaReAsig,@motivoReAsig,@userEntReAsig)" InsertInfoStatusRQ2(SQL , TextBox1.Text , TextBox2.Text , TextBox3.Text , TextBox4.Text , TextBox5.Text ,TextBox6.Text ,TextBox7.Text) Private Sub InsertInfoStatusRQ2(ByVal sql As String, ByVal solicitud As String, ByVal rq As String, ByVal reAsignadoA As String, ByVal statusRQ As String, ByVal fechaReAsig As String, ByVal userEntReAsig As String, ByVal Dim comando As SqlCommand = New SqlCommand()

    Dim conexion As SqlConnection = New SqlConnection (TuCadenaDeConexion) Try comando.Connection = conexion comando.Connection.Open() comando.Parameters.Clear() comando.CommandText = sql comando.Parameters.AddWithValue("@solicitud", solicitud) comando.Parameters.AddWithValue("@rq", rq) comando.Parameters.AddWithValue("@AsignadoA", reAsignadoA) comando.Parameters.AddWithValue("@statusRQ", statusRQ) comando.Parameters.AddWithValue("@fecha", fechaReAsig) comando.Parameters.AddWithValue("@userEntAsig", userEntReAsig) comando.Parameters.AddWithValue("@motivoReAsig", motivoReAsig) comando.ExecuteNonQuery() comando.Connection.Close() Catch ex As Exception comando.Connection.Close() MessageBox.Show("Error" & ex.ToString) End Try End Sub




    EFRAIN MEJIAS C VALENCIA - VENEZUELA



    • Editado Efrain Mejias Castillo martes, 21 de julio de 2015 18:47
    • Marcado como respuesta davidd88 martes, 21 de julio de 2015 22:11
    • Desmarcado como respuesta davidd88 martes, 21 de julio de 2015 22:11
    • Marcado como respuesta davidd88 martes, 21 de julio de 2015 22:11
    • Desmarcado como respuesta davidd88 martes, 21 de julio de 2015 23:02
    • Marcado como respuesta davidd88 miércoles, 22 de julio de 2015 8:43
    martes, 21 de julio de 2015 18:44
  • Y lo que busco es no poner la ruta del Data Source en la aplicacion por si el programa se tiene que ejecutar en otro PC.

    bueno cambia por el ip donde esta SQLSERVER...fijate

    Dim conexion As SqlConnection = New SqlConnection("Data Source=192.168.2.1;Initial Catalog=SSOMENU2;Persist Security Info=True;User ID=sa;Password=xxxxxxxxx")


    EFRAIN MEJIAS C VALENCIA - VENEZUELA



    miércoles, 22 de julio de 2015 0:09

Todas las respuestas

  • Yo paso los valores de la siguiente manera:

     SqlCom.Parameters.AddWithValue("@id", Mi_id);

    Por otro lado debuggea y revisa si el ReaperTextbox6.Text viene vacio al insertar, quiza lo estas limpiando antes del nuevo insert.

    Por otro lado podrias poner los  valores directos en el procedimiento y ejecutarlo para descartar que el problema lo de en BD.


    Si mi respuesta fue útil ayudame marcándola como correcta.

    martes, 21 de julio de 2015 17:32
  • Yo paso los valores de la siguiente manera:

     SqlCom.Parameters.AddWithValue("@id", Mi_id);

    Por otro lado debuggea y revisa si el ReaperTextbox6.Text viene vacio al insertar, quiza lo estas limpiando antes del nuevo insert.

    Por otro lado podrias poner los  valores directos en el procedimiento y ejecutarlo para descartar que el problema lo de en BD.


    Si mi respuesta fue útil ayudame marcándola como correcta.

    Cambiando el Insert por el AddWhithValue como me indicas no lanza error pero tampoco inserta datos.

    La conexion a la BD la estoy haciendo bien?? 

     

    Dim Command = New SqlCommand( _

    "INSERT INTO Perfil (ID, Nombre, Sexo, Edad, Peso, Altura) " & _ "VALUES (" & ID & ",'" & NOMBRE & ",'" & SEXO & ",'" & EDAD & ",'" & PESO & ",'" & ALTURA, Me.PerfilTableAdapter.Connection)

    Esta es la duda que tengo si conecta asi a la BD, no quiero poner la cadena de conexion dentro de la aplicacion por si alguin mas quiere usar la aplicacion.
    Me.PerfilTableAdapter.Connection


    davidd88


    • Editado davidd88 martes, 21 de julio de 2015 18:04
    martes, 21 de julio de 2015 18:02
  • Colola un try catch para saber que error te marca, por otro lado, intenta insertar los datos directos en el procedimiento almacenado en la base de datos asi veras directamente si te marca error bro

    Si mi respuesta fue útil ayudame marcándola como correcta.

    • Propuesto como respuesta PIO DEVELOPER martes, 21 de julio de 2015 19:12
    martes, 21 de julio de 2015 18:23
  • PASAR parametros concatenados en tu consulta esta mal es una Mala Praxis...siempre `por seguridad de tu aplicacion parametriza tus consultas

    fijate este ejemplo

    Dim SQL As String ="INSERT INTO SSOMENU2..InfoStatusRQ (solicitud,rq,statusRQ,reAsignadoA,fechaReAsig,motivoReAsig,userEntReAsig) VALUES (@solicitud,@rq,@statusRQ,@reAsignadoA,@fechaReAsig,@motivoReAsig,@userEntReAsig)" InsertInfoStatusRQ2(SQL , TextBox1.Text , TextBox2.Text , TextBox3.Text , TextBox4.Text , TextBox5.Text ,TextBox6.Text ,TextBox7.Text) Private Sub InsertInfoStatusRQ2(ByVal sql As String, ByVal solicitud As String, ByVal rq As String, ByVal reAsignadoA As String, ByVal statusRQ As String, ByVal fechaReAsig As String, ByVal userEntReAsig As String, ByVal Dim comando As SqlCommand = New SqlCommand()

    Dim conexion As SqlConnection = New SqlConnection (TuCadenaDeConexion) Try comando.Connection = conexion comando.Connection.Open() comando.Parameters.Clear() comando.CommandText = sql comando.Parameters.AddWithValue("@solicitud", solicitud) comando.Parameters.AddWithValue("@rq", rq) comando.Parameters.AddWithValue("@AsignadoA", reAsignadoA) comando.Parameters.AddWithValue("@statusRQ", statusRQ) comando.Parameters.AddWithValue("@fecha", fechaReAsig) comando.Parameters.AddWithValue("@userEntAsig", userEntReAsig) comando.Parameters.AddWithValue("@motivoReAsig", motivoReAsig) comando.ExecuteNonQuery() comando.Connection.Close() Catch ex As Exception comando.Connection.Close() MessageBox.Show("Error" & ex.ToString) End Try End Sub




    EFRAIN MEJIAS C VALENCIA - VENEZUELA



    • Editado Efrain Mejias Castillo martes, 21 de julio de 2015 18:47
    • Marcado como respuesta davidd88 martes, 21 de julio de 2015 22:11
    • Desmarcado como respuesta davidd88 martes, 21 de julio de 2015 22:11
    • Marcado como respuesta davidd88 martes, 21 de julio de 2015 22:11
    • Desmarcado como respuesta davidd88 martes, 21 de julio de 2015 23:02
    • Marcado como respuesta davidd88 miércoles, 22 de julio de 2015 8:43
    martes, 21 de julio de 2015 18:44
  • Hola Efrian, 

    Tu ejemplo si me inserta en la base de datos despues de adaptarlo a mis necesidades, pero en la cadena de conexion hacia la base de datos,

    Si pongo:

    Dim conexion As SqlConnection = New SqlConnection("Data Source=SERVIDOR\LOCALHOST;Initial Catalog=BASEDEDATOS;Integrated Security=True")

    funciona correctamente,

    Pero si pongo:

    Dim conexion As SqlConnection = New SqlConnection(Me.PerfilTableAdapter.Connection)

    Me da error: Un valor de tipo 'System.Data.SqlClient.SqlConnection' no se puede convertir en string

    Y lo que busco es no poner la ruta del Data Source en la aplicacion por si el programa se tiene que ejecutar en otro PC.


    davidd88

    martes, 21 de julio de 2015 22:10
  • Y lo que busco es no poner la ruta del Data Source en la aplicacion por si el programa se tiene que ejecutar en otro PC.

    bueno cambia por el ip donde esta SQLSERVER...fijate

    Dim conexion As SqlConnection = New SqlConnection("Data Source=192.168.2.1;Initial Catalog=SSOMENU2;Persist Security Info=True;User ID=sa;Password=xxxxxxxxx")


    EFRAIN MEJIAS C VALENCIA - VENEZUELA



    miércoles, 22 de julio de 2015 0:09