VB.Net,从DataGridView更新表时出现问题
这是我的第一篇帖子,请原谅我的错误! 我正在尝试将自己从VBA更新到VB.Net。使用Google等提供的大量帮助,除了尝试从DataGridView更新表外,我做得还不错。它只是不更新。我想要的是,一个单元格是更新的变化。到目前为止,我的代码如下所示(我已经尝试了各种生成器、表等,因此我的代码可能有一些冗余):VB.Net,从DataGridView更新表时出现问题,vb.net,datagridview,visual-studio-2017,Vb.net,Datagridview,Visual Studio 2017,这是我的第一篇帖子,请原谅我的错误! 我正在尝试将自己从VBA更新到VB.Net。使用Google等提供的大量帮助,除了尝试从DataGridView更新表外,我做得还不错。它只是不更新。我想要的是,一个单元格是更新的变化。到目前为止,我的代码如下所示(我已经尝试了各种生成器、表等,因此我的代码可能有一些冗余): 任何帮助都将不胜感激。这是SQL Server的,对吗。像这样试试 Imports System.Data.SqlClient Public Class Form1 Dim s
任何帮助都将不胜感激。这是SQL Server的,对吗。像这样试试
Imports System.Data.SqlClient
Public Class Form1
Dim sCommand As SqlCommand
Dim sAdapter As SqlDataAdapter
Dim sBuilder As SqlCommandBuilder
Dim sDs As DataSet
Dim sTable As DataTable
Private Sub load_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles load_btn.Click
Dim connectionString As String = "Data Source=.;Initial Catalog=pubs;Integrated Security=True"
Dim sql As String = "SELECT * FROM Stores"
Dim connection As New SqlConnection(connectionString)
connection.Open()
sCommand = New SqlCommand(sql, connection)
sAdapter = New SqlDataAdapter(sCommand)
sBuilder = New SqlCommandBuilder(sAdapter)
sDs = New DataSet()
sAdapter.Fill(sDs, "Stores")
sTable = sDs.Tables("Stores")
connection.Close()
DataGridView1.DataSource = sDs.Tables("Stores")
DataGridView1.ReadOnly = True
save_btn.Enabled = False
DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
End Sub
Private Sub new_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles new_btn.Click
DataGridView1.[ReadOnly] = False
save_btn.Enabled = True
new_btn.Enabled = False
delete_btn.Enabled = False
End Sub
Private Sub delete_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles delete_btn.Click
If MessageBox.Show("Do you want to delete this row ?", "Delete", MessageBoxButtons.YesNo) = DialogResult.Yes Then
DataGridView1.Rows.RemoveAt(DataGridView1.SelectedRows(0).Index)
sAdapter.Update(sTable)
End If
End Sub
Private Sub save_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles save_btn.Click
sAdapter.Update(sTable)
DataGridView1.[ReadOnly] = True
save_btn.Enabled = False
new_btn.Enabled = True
delete_btn.Enabled = True
End Sub
End Class
这是针对SQL Server的,对吗。像这样试试
Imports System.Data.SqlClient
Public Class Form1
Dim sCommand As SqlCommand
Dim sAdapter As SqlDataAdapter
Dim sBuilder As SqlCommandBuilder
Dim sDs As DataSet
Dim sTable As DataTable
Private Sub load_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles load_btn.Click
Dim connectionString As String = "Data Source=.;Initial Catalog=pubs;Integrated Security=True"
Dim sql As String = "SELECT * FROM Stores"
Dim connection As New SqlConnection(connectionString)
connection.Open()
sCommand = New SqlCommand(sql, connection)
sAdapter = New SqlDataAdapter(sCommand)
sBuilder = New SqlCommandBuilder(sAdapter)
sDs = New DataSet()
sAdapter.Fill(sDs, "Stores")
sTable = sDs.Tables("Stores")
connection.Close()
DataGridView1.DataSource = sDs.Tables("Stores")
DataGridView1.ReadOnly = True
save_btn.Enabled = False
DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
End Sub
Private Sub new_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles new_btn.Click
DataGridView1.[ReadOnly] = False
save_btn.Enabled = True
new_btn.Enabled = False
delete_btn.Enabled = False
End Sub
Private Sub delete_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles delete_btn.Click
If MessageBox.Show("Do you want to delete this row ?", "Delete", MessageBoxButtons.YesNo) = DialogResult.Yes Then
DataGridView1.Rows.RemoveAt(DataGridView1.SelectedRows(0).Index)
sAdapter.Update(sTable)
End If
End Sub
Private Sub save_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles save_btn.Click
sAdapter.Update(sTable)
DataGridView1.[ReadOnly] = True
save_btn.Enabled = False
new_btn.Enabled = True
delete_btn.Enabled = True
End Sub
End Class
经过两天的努力,我终于自己搞定了!此外,我还关注@ryguy72代码。以下是您可以采取的步骤: 步骤1:将DataGridView拖放到表单中 步骤2:在App.config中,在配置之间添加以下内容:
<connectionStrings>
<add name="ehsanConnection" connectionString="Data Source=XXX
; User= XX; Password= XXX" ProviderName="System.Data.SqlClient"/>
</connectionStrings>
这里的要点是,我必须使用[Ehsan].[dbo].[Data],而不仅仅是表名“Data”。事实上,这样对我不起作用,它一直在抱怨
步骤4:如果要在更改datagridview中的某些记录后更新数据库,请使用以下代码:
sAdapter.Update(sDs.Tables(0))
最重要的一点是:“您必须先在表中设置一个主键,否则它将不起作用!”经过两天的工作,我终于自己找到了它!此外,我还关注@ryguy72代码。以下是您可以采取的步骤: 步骤1:将DataGridView拖放到表单中 步骤2:在App.config中,在配置之间添加以下内容:
<connectionStrings>
<add name="ehsanConnection" connectionString="Data Source=XXX
; User= XX; Password= XXX" ProviderName="System.Data.SqlClient"/>
</connectionStrings>
这里的要点是,我必须使用[Ehsan].[dbo].[Data],而不仅仅是表名“Data”。事实上,这样对我不起作用,它一直在抱怨
步骤4:如果要在更改datagridview中的某些记录后更新数据库,请使用以下代码:
sAdapter.Update(sDs.Tables(0))
最重要的一点是:“您必须首先在表中设置主键,否则它将不起作用!”您对strName没有任何价值。串接字符串不是构建为SQL语句的方法。使用参数来避免错误并帮助防止SQL注入。对不起,我应该说,strName是从另一种形式引入的。网格中的数据显示正确。我可以编辑它,但它不会更新。你对strName没有任何价值。串接字符串不是构建为SQL语句的方法。使用参数来避免错误并帮助防止SQL注入。对不起,我应该说,strName是从另一种形式引入的。网格中的数据显示正确。我可以编辑它,但它就是不更新。太棒了!我创建了一个新的项目,表格等。它的工作,非常感谢我现在有一些我可以使用的东西。再次感谢,太棒了!我创建了一个新的项目,表格等。它的工作,非常感谢我现在有一些我可以使用的东西。再次非常感谢,谢谢你。在使用下面ryguy72的代码并稍加修改后,我使它工作起来了。我和你一样发现了主键。信息技术这和VBA有点不同,也许我已经用了很长时间了,习惯很难改掉!谢谢你,伊桑。在使用下面ryguy72的代码并稍加修改后,我使它工作起来了。我和你一样发现了主键。信息技术这和VBA有点不同,也许我已经用了很长时间了,习惯很难改掉!