在VB.net中通过DataGridView更新SQL表
好吧,这可能是我问过的最愚蠢的问题之一,但我已经为这个问题挣扎了几个小时。虽然为我辩护,我做vb.net程序员才3个小时,所以 我想更新一个SQL表。我已设法将SQL查询的内容检索到DataGridView中。我还设法获得了一个单独的查询来填充DGV中的组合框 然而,我正在努力更新表格。。。看起来好像没有数据连接。。。查询在大约30秒后超时,并显示一些很长的消息,但我总结为“服务器未找到或无法访问” 这是包含DGV的“我的表单”的类: 代码: 然后是表单加载(这里的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可以正常工作): 代码:
为这个愚蠢的问题提前道歉。我不知道您正在使用的查询类实例是什么。但是我想这个类需要知道用于运行命令文本的连接。什么是查询类?如何将连接传递到其实例之一?谢谢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