用VB语言 如何将在控件datagridview中修改数据更新到数据库?

作者&投稿:祢缪 (若有异议请与网页底部的电邮联系)
vb.net 中,如何把在 datagridview中直接修改的值保存到数据库中~

首先将表读取到DataSet
用DataGridView绑定数据源
在 datagridview中直接修改字段的值后,用
SqlDataAdapter的Update方法更新
DataSet即可!

变量的作用域的概念错误:
改用下面代码:

Imports System.Data.SqlClient
Public Class Form1

Dim con As New SqlConnection
Dim Com As SqlCommand
Dim da As SqlDataAdapter
Dim ds As DataSet

'查询按钮代码
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
con = New SqlConnection("data source=mypc;initial catalog=xiaoshouxt;" & "integrated security=false;user=sa;password=8348538620")
con.Open()
Com = New SqlCommand(TextBox1.Text, con)
'Dim da As SqlDataAdapter '这行不要
'Dim ds As DataSet '这行不要

da = New SqlDataAdapter(com)
ds = New DataSet
da.Fill(ds, "ch")
DataGridView1.DataSource = ds.Tables("ch")
End Sub

'修改datagridview1中数据保存按钮
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'下面两行也不要
'con = New SqlConnection("data source=mypc;initial catalog=xiaoshouxt;" & "integrated security=false;user=sa;password=8348538620")
'con.Open()

'保存表身修改后的数据
Dim A As New SqlCommandBuilder(da)
da.Update(ds, "ch")
con.close()
End Sub
End Class

'关键是OleDbCommandBuilder(你自己把其改成SqlClient.SqlCommandBuilder)

'以下是我现成的操作OLEDB数据库的,也就是Access2003那种,你自己修改成SQL的就可以用
'首先在窗体上加DataGridView1,BindingSource1,BindingNavigator1,Button1控件各一个,然后在BindingNavigator1控件上增加一个按钮ToolStrip_Save
修改的关键是OleDbCommandBuilder(你自己把其改成SqlClient.SqlCommandBuilder)
'--------下面是整个类代码-----------------------------------------------------------
Imports System.Data.OleDb
Public Class Form1
    Dim ds As DataSet
    Dim tb As DataTable
    Dim ap As OleDbDataAdapter

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '手动显示
        Me.DataGridView1.AllowUserToAddRows = False
             tb = New DataTable
            ap = New OleDbDataAdapter("select * from electic ", cn)'这里是SQL命令,Cn是数据库连接,修改成你的Conn
            ap.Fill(tb)
            Me.BindingSource1.DataSource = tb
            Me.BindingNavigator1.BindingSource = Me.BindingSource1
            Me.DataGridView1.DataSource = Me.BindingSource1
    End Sub

    Private Sub ToolStrip_Save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStrip_Save.Click '调用保存
        Save_Data()
    End Sub
    Private Function Save_Data() As Boolean '保存数据库的操作
        Try
            Me.DataGridView1.EndEdit()
            Me.BindingSource1.EndEdit()
            Dim bd As New OleDbCommandBuilder(ap)
            ap.UpdateCommand = bd.GetUpdateCommand
            ap.Update(Me.BindingSource1.DataSource)
             Return True
        Catch ex As Exception
            MsgBox(ex.Message)
            Return False
        End Try
    End Function

    Private Sub ToolStrip_Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStrip_Cancel.Click '撤销操作
        Button1_Click(sender, e)
    End Sub 
End class


无需代码,DataGridView绑定数据后添加BindingNavigator控件,运行时自动执行操作。


武都区17898409110: 用VB语言 如何将在控件datagridview中修改数据更新到数据库? -
有宰坎地: '关键是OleDbCommandBuilder(你自己把其改成SqlClient.SqlCommandBuilder)'以下是我现成的操作OLEDB数据库的,也就是Access2003那种,你自己修改成SQL的就可以用'首先在窗体上加DataGridView1,BindingSource1,...

武都区17898409110: 如何实现VB中用DataGrid控件显示数据? -
有宰坎地: VB利用DataGrid控件显示数据库中数据信息,DataGrid在数据库数据显示的时候非常重要,它在用户操作舒适度及数据排列方面有独到之处,对于Vb数据库编程的用户来说,掌握DataGrid的使用是至关重要的事情. 参考实例如下...

武都区17898409110: 在VB中,如何在datagrid控件中输入数据? -
有宰坎地: 要用一个data的数据库控件.设好data的DatabaseName 和RecordSource,再将dbgrid的datasource设为data就可以了.

武都区17898409110: VB:怎样把Access数据库中的表的内容显示在DataGird控件中? -
有宰坎地: 具体做法:新建工程时选数据工程,此时VB6集成调试环境左边工具箱内已加载了有关数据库编程必须的控件.然后在FORM1窗体中添加ADODC控件和DATAGRID控件,将DATAGRID1的属性DATASOURCE选ADODC1,打开ADODC1控件属...

武都区17898409110: vb中,怎样在日期控件中选择一个日期,datagrid中就显示这个月的数据 -
有宰坎地: 在日期控件选择日期的过程中触发adodb.open "select * from TargetDB where 日期='" & 日期控件.value '",adodbco...

武都区17898409110: VB6.0 中datagrid控件如何将行、列的数据进行计算汇总在同一个datagrid控件中的最后一行. -
有宰坎地: datagrid不行,因为datagrid绑定数据库,因此不能添加一个附加行.即使在SQL命令中通过union方式进行统计后显示,但又会导致datagrid不能新增.解决办法有2个: 1、用MSFlexGrid; 2、自己写一个用户控件,大概意思就是里面有2个datagrid,一个大的,专门显示记录,一个小的,不要标题行,专门显示合计数;在里面增加写代码使它们水平同步滚动.

武都区17898409110: VB,怎么将一个内容为固定字段宽度的TXT文件,将其各个字段的内容显示在一个DataGrid控件中 -
有宰坎地: DataGird我不会用,建议你使用Listview控件,将Listview的查看方式设置成Report,添加若干列,就能实现和资源管理器的"详细...

武都区17898409110: 如何使数据库的内容在vb中显示 -
有宰坎地: 大致上有两者方法,一是用控件,VB自带的ADODC+DATAGRID,设置DataGrid.DataSource为ADODC即可 二是用代码连接数据库,通常用 ADO+DataGrid.引用ADO库,定义Connection对象打开数据库,Recordset对象执行查询,并将数据显示在DataGrid里.

武都区17898409110: 在vb中,如何将data控件关联的数据库信息读入数组? -
有宰坎地: data.Recordset的 方法有movefirst\movelast\movenext\moveprevious 这些方法来移动记录,(每条 记录相当于表里面的一行,用这些方法 移动到某一行,) 然后 用 data.Recordset.fields.(0).value来取某条记录中第一个字段的值 data.Recordset.fields.(0).name表示某条记录中第一个字段的字段名 (即列名) 字段(列)多的话 就这样data.Recordset.fields.(n).value其中表示第几个字段 ,即在某一行中取某一列的值.

武都区17898409110: VB语言 中DataGrid控件,如何获取当前选中的行的某个属性值?谢谢 -
有宰坎地: 在DataGrid1_RowColChange事件里编写如下代码,你就可以了,如下:可以返回选择的行,注意,行从0开始编号:Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer) MsgBox DataGrid1.Row End Sub

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网