读书人

DataGridView 保留修改后的数据到数据

发布时间: 2012-09-06 10:37:01 作者: rapoo

DataGridView 保存修改后的数据到数据库
DataGridView中有我已经查询到的内容,我想再DataGridView中直接修改数据后点击保存按钮就可以把修改厚后的内容保存。

Private selectCommand As New SqlCommand
Private dataAdapter As New SqlDataAdapter
Private sqlConn As New SqlConnection

‘查询数据库,填充DataGridView
Private Sub RecordCheck_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
sqlstr = "select * from AddFreon order by EndTime Desc"

Dim connStr As String = System.Configuration.ConfigurationManager.AppSettings("connFreon")
sqlConn = New SqlConnection(connStr)
If sqlConn.State = ConnectionState.Closed Then
sqlConn.Open()
End If
selectCommand = sqlConn.CreateCommand()
selectCommand.CommandText = sqlstr
dataAdapter = New SqlDataAdapter
dataAdapter.SelectCommand = selectCommand
Dim data As DataTable = New DataTable()
dataAdapter.Fill(data)
DataGridView1.DataSource = data


Dim builder As SqlCommandBuilder = New SqlCommandBuilder(dataAdapter)
dataAdapter.InsertCommand = builder.GetInsertCommand()
dataAdapter.DeleteCommand = builder.GetInsertCommand()

End Sub

'保存修改后的内容到数据库
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Button1.Text = "修改"
Dim data As DataTable = New DataTable
data = Me.DataGridView1.DataSource
Dim changedData As DataTable = New DataTable

changedData = data.GetChanges()
If Not changedData Is Nothing Then

dataAdapter.Update(changedData)
data.AcceptChanges()
end if
End Sub

为什么会将修改后的内容已一条新的纪录添加进来?

[解决办法]
检查你数据库的主键,如果没有把它加进Datatable,那么就肯定会这样
[解决办法]
问题挺简单的,不要郁闷,如果你数据库的主键是“Id”,照一下代码试试,不行等会给你发给重写CommandText的。代码别写那么复杂

VB.NET code
    Private selectCommand As New SqlCommand    Private dataAdapter As New SqlDataAdapter    Private sqlConn As New SqlConnection    '查询数据库,填充DataGridView    Private Sub RecordCheck_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        Dim sqlstr = "select * from AddFreon order by EndTime Desc"        Dim connStr As String = System.Configuration.ConfigurationSettin.AppSettings("connFreon")        sqlConn = New SqlConnection(connStr)        If sqlConn.State = ConnectionState.Closed Then            sqlConn.Open()        End If        selectCommand = sqlConn.CreateCommand()        selectCommand.CommandText = sqlstr        dataAdapter = New SqlDataAdapter        dataAdapter.SelectCommand = selectCommand        Dim data As DataTable = New DataTable()        data.Columns.Add("id", GetType(Integer))        data.Columns("id").AutoIncrement = True        data.Columns("id").AutoIncrementSeed = -1        data.Columns("id").AutoIncrementStep = -1        data.PrimaryKey = New DataColumn() {data.Columns("id")}        dataAdapter.Fill(data)        DataGridView1.DataSource = data        Dim builder As SqlCommandBuilder = New SqlCommandBuilder(dataAdapter)        'dataAdapter.InsertCommand = builder.GetInsertCommand()        'dataAdapter.DeleteCommand = builder.GetInsertCommand()    End Sub    '保存修改后的内容到数据库    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        Button1.Text = "修改"        'Dim data As DataTable = New DataTable        'data = Me.DataGridView1.DataSource        'Dim changedData As DataTable = New DataTable        'changedData = data.GetChanges()        Dim changedData As DataTable = Me.DataGridView1.DataSource()        If Not changedData Is Nothing Then            dataAdapter.Update(changedData)            'changedData.AcceptChanges()        End If    End Sub 


[解决办法]
数据库的主键

读书人网 >VB Dotnet

热点推荐