在VB.net中通过DataGridView更新SQL表

在VB.net中通过DataGridView更新SQL表,vb.net,datagridview,database-connection,Vb.net,Datagridview,Database Connection,好吧,这可能是我问过的最愚蠢的问题之一,但我已经为这个问题挣扎了几个小时。虽然为我辩护,我做vb.net程序员才3个小时,所以 我想更新一个SQL表。我已设法将SQL查询的内容检索到DataGridView中。我还设法获得了一个单独的查询来填充DGV中的组合框 然而,我正在努力更新表格。。。看起来好像没有数据连接。。。查询在大约30秒后超时,并显示一些很长的消息,但我总结为“服务器未找到或无法访问” 这是包含DGV的“我的表单”的类: 代码: 然后是表单加载(这里的SQL可以正常工作): 代码:

好吧,这可能是我问过的最愚蠢的问题之一,但我已经为这个问题挣扎了几个小时。虽然为我辩护,我做vb.net程序员才3个小时,所以

我想更新一个SQL表。我已设法将SQL查询的内容检索到DataGridView中。我还设法获得了一个单独的查询来填充DGV中的组合框

然而,我正在努力更新表格。。。看起来好像没有数据连接。。。查询在大约30秒后超时,并显示一些很长的消息,但我总结为“服务器未找到或无法访问”

这是包含DGV的“我的表单”的类:

代码:

然后是表单加载(这里的SQL可以正常工作):

代码:

虽然这不起作用…:

代码:


为这个愚蠢的问题提前道歉。

我不知道您正在使用的查询类实例是什么。但是我想这个类需要知道用于运行命令文本的连接。什么是查询类?如何将连接传递到其实例之一?谢谢Steve。。。查询类中确实存在设置不正确的连接字符串。对我来说这一切都很复杂。。。我真的不明白发生了什么!!谢谢你的帮助。
Imports System.Data.SqlClient


Public Class Form1
    Public query As New Query
    Private con As New SqlConnection("Data Source=SQL-SERVER;Initial Catalog=Expenses;Integrated Security=True")
  Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'CREATE CHECKBOX
        Dim chk As New DataGridViewCheckBoxColumn() With {.HeaderText = "SELECT", .Name = "chk", _
                                                          .AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells, _
                                                          .FlatStyle = FlatStyle.Standard, .ThreeState = False}
        'CREATE COMBOBOX
        Dim CMD As New SqlCommand
        Dim cbb As New DataGridViewComboBoxColumn() With {.HeaderText = "CATEGORY"}
        CMD.Connection = con
        CMD.CommandText = "SELECT Category FROM InformationCategory"
        con.Open()


        Dim Reader As SqlDataReader
        Reader = CMD.ExecuteReader


        While Reader.Read
            cbb.Items.Add(Reader.Item("Category"))
        End While


        con.Close()


        'ADD BUTTON
        Dim btnDelete As New DataGridViewButtonColumn() With {.HeaderText = "DELETE", .Text = "DELETE"}


        'DataGridView1.Columns.Insert(0, chk)
        DataGridView1.Columns.Add("", "ID")
        DataGridView1.Columns.Add("", "DATE")
        DataGridView1.Columns.Add("", "CARD NO.")
        DataGridView1.Columns.Add("", "DESCRIPTION")
        DataGridView1.Columns.Add("", "VALUE")
        'DataGridView1.Columns.Add("", "VALUE")
        DataGridView1.Columns.Insert(4, cbb)
        'DataGridView1.Columns.Insert(6, btnDelete)
        'DataGridView1.Columns.Add("", "ID")
        DataGridView1.Columns.Add("", "COMMENTS")


        DataGridView1.Columns(0).Width = 30
        DataGridView1.Columns(1).Width = 70
        DataGridView1.Columns(2).Width = 100
        DataGridView1.Columns(3).Width = 500
        DataGridView1.Columns(4).Width = 205
        DataGridView1.Columns(5).Width = 70
        DataGridView1.Columns(6).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill


        RemoveHandler DataGridView1.CellValueChanged, AddressOf DataGridView1_CellValueChanged
        FillGrid()
        AddHandler DataGridView1.CellValueChanged, AddressOf DataGridView1_CellValueChanged


    End Sub
Private Sub DataGridView1_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged


        Dim sql As String


        sql = "UPDATE Database.dbo.Table SET COMMENTS='" + DataGridView1.CurrentRow.Cells(6).Value + "'"


        MessageBox.Show("row index: " & e.RowIndex & Environment.NewLine & "old value: " & cellValue)


        MessageBox.Show(sql)


        con.Open()


        query.ExcuteQuery(sql)


        con.Close()
    End Sub