Google Mobile Ads

Friday, July 22, 2016

SQLBulkCopy ile identity kolonu olan bir tabloya veri aktarma

SQLBulkCopy ile identity kolonu olan bir tabloya veri aktarmak için aktarılacak datatable'da identity kolonunun da tanımlı olması ve veritabanı tablosuyla datatable'ın birebir aynı kolon isimlerine sahip olması gerekiyor.

SQLBulkCopy ile aktarmadan önce datatable'daki identity kolonunun satır içerikleri DBNull.Value olarak set edilmelidir.


Örnek:

dsID değerinin veritabanı tarafında identity olarak tanımlı olduğunu varsayalım.

Dim dtVender As New DataTable()

dtVender.Columns.Add(New DataColumn())
dtVender.Columns.Add(New DataColumn())
dtVender.Columns.Add(New DataColumn())
                            

Dim vRow As DataRow = dtVender.NewRow()
vRow.Item(0) = DBNull.Value
vRow.Item(1) = vender_no
vRow.Item(2) = sku_id

dtVender.Rows.Add(vRow)



Datatable'ı doldurduktan sonra aşağıdaki metodu kullanarak datatable içerisindeki verileri "tbl_Vender" tablosuna aktardığınızda identity alanının kontrolünün veritabanı tarafında gerçekleşmiş olduğunu göreceksiniz.

SQLBulkCopyToTable(dtVender, "tbl_Vender")


Private Sub SQLBulkCopyToTable(ByRef sourceDT As DataTable, destinationTableName As String)
        Try
            Using cn As New SqlConnection(ConfigurationManager.AppSettings("ConnectionString").ToString())
                cn.Open()
                If sourceDT.Rows.Count > 0 Then
                    Using copy As New SqlBulkCopy(cn)
                        copy.DestinationTableName = destinationTableName
                        copy.BulkCopyTimeout = 5000
                        copy.BatchSize = 5000
                        copy.WriteToServer(sourceDT)
                    End Using
                End If
            End Using
        Catch ex As Exception

        End Try
End Sub


'SQLBulkCopy insert with identity column

No comments:

Post a Comment

LinkWithin

Related Posts Plugin for WordPress, Blogger...