我有一个Datagridview,它从SQL Server中填充了一些数据。这没关系,没问题。
每次我在表中插入或更新记录时,我想重新设置一个名为IDENTITY
的CarID
列,但IDS序列似乎不好,因为有时会删除记录。
在我的代码中,我使用'SQLCOMMANDBUILDER'来执行插入,更新或删除操作。
我尝试了下面的代码但是我抛出一个异常错误,上面写着“找不到表0”。
我应该在哪里修理?
//THESE ARE CODE TO RESEED AN IDENTITY COLUMN
Sub ResetIDColumn()
Try
Dim querystring As String = "declare @max int " &
"Select @max=max([CarID]) FROM [dbo].[Cars]" &
"if @max IS NULL SET @max = 0 " &
"DBCC CHECKIDENT ('[Cars]', RESEED,@max)"
ds = New DataSet
da = New SqlDataAdapter(querystring, con)
cmdbuilder = New SqlCommandBuilder(da)
da.Fill(ds)
DgvCarList.DataSource = ds.Tables(0)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
//CODE TO PUPOLATE DATAGRIDVIEW
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs)
Handles MyBase.Load
Try
Dim querystring As String = "SELECT * FROM [dbo].[Cars]"
ds = New DataSet
da = New SqlDataAdapter(querystring, con)
cmdbuilder = New SqlCommandBuilder(da)
da.Fill(ds)
DgvCarList.DataSource = ds.Tables(0)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
//CODE TO INSERT OR UPDATE DATA
Private Sub btnUpdate_Click(sender As System.Object, e As System.EventArgs) Handles btnUpdate.Click
ResetIDColumn()
Try
da.Update(ds.Tables(0))
MessageBox.Show("Update was successful!", "Data")
Loaddata()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
//CODE TO LOAD DATA
Sub Loaddata()
Dim querystring As String = "SELECT * FROM [dbo].[Cars]"
ds = New DataSet
da = New SqlDataAdapter(querystring, con)
cmdbuilder = New SqlCommandBuilder(da)
da.Fill(ds)
DgvCarList.DataSource = ds.Tables(0)
DgvCarList.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
End Sub
我越来越努力,终于发现了 - ;
码:
// Button click to delete a record
Try
If ds.Tables(0).Rows.Count > 0 Then
Dim rowposition As Integer = DgvCarList.CurrentRow.Index
Dim rowdelete As DataRow = ds.Tables(0).Rows(rowposition)
rowdelete.Delete()
da.Update(ds)
MessageBox.Show("Delete was success!", "Data")
Loaddata()
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
// After delete completed Go and reset an identity column
ResetIDColumn()
// code to reset an identity column
Sub ResetIDColumn()
Try
Dim querystring As String = "SELECT * FROM [dbo].[Cars] go " &
"DECLARE @max INT " &
"Select @max=max([CarID]) FROM [dbo].[Cars]" &
"if @max IS NULL SET @max = 0 " &
"DBCC CHECKIDENT ('[Cars]', RESEED,@max)"
ds = New DataSet
da = New SqlDataAdapter(querystring, con)
cmdbuilder = New SqlCommandBuilder(da)
da.Fill(ds)
DgvCarList.DataSource = ds.Tables(0)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
...................Thank you all..................................