Visual Basic - excepcion no controlada

Life is soft - evento anual de software empresarial
 
Vista:

excepcion no controlada

Publicado por luis bravo (1 intervención) el 13/07/2022 18:07:27
Buen dia compañeros, soy nuevo en vb y estoy haciendo un inventario conectado a una base de datos en sql, todo funciona bien solo que cuando trato de guadar datos en la base desde vb.net me arroja un error de excepcion no controlada, ya busque y no encuentro nada con que solucionarlo. desconozco si es error mio pero en cada proyecto que abro y trato de guardar datos en la BD me arroja el error.
"System.InvalidOperationException: 'ExecuteNonQuery: la propiedad Connection no se ha inicializado.' "


Imports System.Data
Imports System.Data.SqlClient

Public Class Form1
Private cn As SqlConnection
Private ds As DataSet
Private da As SqlDataAdapter
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
cn = New SqlConnection
cn.ConnectionString = "server=HPLK-14FFP4-TI\SQLEXPRESS;database=PRUEBA;integrated security=true; "
da = New SqlDataAdapter
Dim cmdi As New SqlCommand("insert into nombretabla(nombrecolumna1. nombrecolumna2. nombrecolumna3. )values (@TextBox1,@TextBox2,@TextBox3")
da.InsertCommand = cmdi
da.InsertCommand.Parameters.Add(New SqlParameter("@nombrecolumna1", SqlDbType.VarChar))
da.InsertCommand.Parameters.Add(New SqlParameter("@nombrecolumna2", SqlDbType.VarChar))
da.InsertCommand.Parameters.Add(New SqlParameter("@nombrecolumna3", SqlDbType.VarChar))

Dim consulta As New SqlCommand("select * from nombretabla", cn)
da.SelectCommand = consulta
ds = New DataSet
Me.cargardatos()


End Sub

Private Sub cargardatos()
ds.Clear()
cn.Open()
da.Fill(ds, "nombretabla")
cn.Close()
Me.DataGridView1.DataSource = ds
Me.DataGridView1.DataMember = "nombretabla"
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim resultados As Integer
da.InsertCommand.Parameters("@nombrecolumna1").Value = Me.TextBox1
da.InsertCommand.Parameters("@nombrecolumna2").Value = Me.TextBox2
da.InsertCommand.Parameters("@nombrecolumna3").Value = Me.TextBox3

cn.Open()
resultados = da.InsertCommand.ExecuteNonQuery

Me.cargardatos()
MessageBox.Show("GUARDADO" & resultados)
End Sub
End Class
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 11
Ha aumentado su posición en 6 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

excepcion no controlada

Publicado por David (16 intervenciones) el 16/07/2022 07:19:37
Error se da porque te esta faltando un open en algun lado por ello no llega ejecutar el ExecuteNonQuery, ya que esta cerrada la conexion
luego de poner el codigo mas legible creo que hay muchas lineas de codigo solo para un insertar que se podrian simplicar, si te interesa lo modifique
y queda tal que asi.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
    Private cn As SqlConnection
    Private ds As DataSet
    Private da As SqlDataAdapter
    Private dt As DataTable
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        cn = New SqlConnection
        cn.ConnectionString = "server=HPLK-14FFP4-TI\SQLEXPRESS;database=PRUEBA;integrated security=true; "
        cargardatos()
    End Sub
    Private Sub cargardatos()
        Try
            Dim sql As String
            sql = "select * from nombretabla"
            da = New SqlDataAdapter(sql, cn)
            dt = New DataTable()
            da.Fill(dt)
            DataGridView1.DataSource = dt
        Catch
            MsgBox(Err.Description)
        End Try
 
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            cn.Open()
            Dim nomcolumna1 As String = TextBox1.Text
            Dim nomcolumna2 As String = TextBox2.Text
            Dim nomcolumna3 As String = TextBox3.Text
            Dim cadena As String = "insert into clientes(nombrecolumna1,nombrecolumna2, nombrecolumna2) values ('" & nomcolumna1 & "','" & nomcolumna2 & "','" & nomcolumna3 & "')"
            Dim comando As SqlCommand
            comando = New SqlCommand(cadena, cn)
            comando.ExecuteNonQuery()
            MessageBox.Show("GUARDADO")
            TextBox1.Text = ""
            TextBox2.Text = ""
            TextBox3.Text = ""
            cargardatos()
        Catch
            MsgBox(Err.Description)
        End Try
        cn.Close()
    End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar