用VB语言 如何将在控件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控件,运行时自动执行操作。
有宰坎地: '关键是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