通过 SqlDataAdapter.update 方法通过DataSet更新数据库

原创 2007年09月13日 19:19:00

 

Public Class DateSetDemo 

'定义事务
    Private SqlTran As SqlTransaction
     SqlTran 
= conn.BeginTransaction
     
Dim rtnBool As Boolean = UpdateTableFunc(conn, SqlTran, "M_System2""M_System", cmdDataArgs)
     
If rtnBool Then
             SqlTran.Commit()
     
Else
             SqlTran.Rollback()
     
End If

    
Private M_Sys2ColName() As String = {"Shubetsu""Code""SeigyoJouho3"}
    
Private M_Sys2Key() As String = {"Shubetsu""Code"}
    
Private M_Sys3ColName() As String = {"Shubetsu""Code""SeigyoJouho3"}
    
Private M_Sys3Key() As String = {"Shubetsu""Code"}
    
'******************************************************************
    Private Function GetColumn(ByVal tableName As StringAs String()
        
Select Case UCase(tableName)
            
Case "M_SYSTEM2"
                
Return M_Sys2ColName
            
Case "M_SYSTEM3"
                
Return M_Sys3ColName
            
Case Else
                
Return Nothing
        
End Select
    
End Function

    
'********************************************************************
    Private Function GetTblKey(ByVal tableName As StringAs String()
        
Select Case UCase(tableName)
            
Case "M_SYSTEM2"
                
Return M_Sys2Key
            
Case "M_SYSTEM3"
                
Return M_Sys2Key
            
Case Else
                
Return Nothing
        
End Select
    
End Function


    
Public Function UpdateTableFunc(ByVal conn As SqlConnection, ByVal SqlTran As SqlTransaction, ByVal strTblName As StringByVal strDtsTblName As StringByVal dtsUpdate As Data.DataSet) As Boolean
        
Try
            
Dim dataAdapter As New SqlDataAdapter

            dataAdapter.UpdateCommand 
= CreateCommand(conn, SqlTran, "Update", strTblName, strDtsTblName, dtsUpdate)
            dataAdapter.InsertCommand 
= CreateCommand(conn, SqlTran, "Insert", strTblName, strDtsTblName, dtsUpdate)
            dataAdapter.DeleteCommand 
= CreateCommand(conn, SqlTran, "Delete", strTblName, strDtsTblName, dtsUpdate)

            dataAdapter.Update(dtsUpdate, strDtsTblName)
            dtsUpdate.Tables(strDtsTblName).AcceptChanges()

            
Return True
        
Catch ex As Exception
            
Return False
        
End Try
    
End Function



    
Private Function CreateCommand(ByVal conn As SqlConnection, ByVal SqlTran As SqlTransaction, ByVal sqlName As StringByVal strTblName As StringByVal strDtsTblName As StringByVal dtsUpdate As Data.DataSet) As SqlCommand
        
Dim SqlTmp As String = Nothing
        
Dim i As Integer
        
Dim columnName() As String, pKey() As String


        columnName 
= GetColumn(strTblName)
        pKey 
= GetTblKey(strTblName)

        
Select Case UCase(sqlName)
            
Case "UPDATE"
                
'UodateCommand
                SqlTmp = "Update " & strTblName & " Set"
                
For i = 0 To columnName.Length - 1
                    SqlTmp 
= SqlTmp & " " & Trim(columnName(i)) & "= @" & Trim(columnName(i)) & ","
                
Next
                SqlTmp 
= Mid(SqlTmp, 1, SqlTmp.Length - 1& " Where "
                
For i = 0 To pKey.Length - 1
                    SqlTmp 
= SqlTmp & " " & Trim(pKey(i)) & "= @" & Trim(pKey(i)) & " And"
                
Next
                SqlTmp 
= Mid(SqlTmp, 1, SqlTmp.Length - 4)

            
Case "INSERT"
                
'InsertCommand
                SqlTmp = "Insert into " & strTblName & "("
                
For i = 0 To columnName.Length - 1
                    SqlTmp 
= SqlTmp & Trim(columnName(i)) & ","
                
Next
                SqlTmp 
= Mid(SqlTmp, 1, SqlTmp.Length - 1& ") Values ("
                
For i = 0 To columnName.Length - 1
                    SqlTmp 
= SqlTmp & "@" & Trim(columnName(i)) & ","
                
Next
                SqlTmp 
= Mid(SqlTmp, 1, SqlTmp.Length - 1& ")"

            
Case "DELETE"
                
'DeleteCommand
                SqlTmp = "Delete " & strTblName & " Where"
                
For i = 0 To pKey.Length - 1
                    SqlTmp 
= SqlTmp & " " & Trim(pKey(i)) & " = @" & Trim(pKey(i)) & " And"
                
Next
                SqlTmp 
= Mid(SqlTmp, 1, SqlTmp.Length - 4)
        
End Select

        
Dim cmd As New SqlCommand(SqlTmp, conn)

        cmd.CommandType 
= CommandType.Text
        cmd.Transaction 
= SqlTran
        
For i = 0 To columnName.Length - 1
            cmd.Parameters.Add(
"@" & columnName(i), getSqlDbType(dtsUpdate.Tables(strDtsTblName).Columns(columnName(i)).DataType.ToString), -1, columnName(i))
        
Next

        
Return cmd
    
End Function




    
Private Function getSqlDbType(ByVal TypeName As StringAs SqlDbType
        
Select Case TypeName()
            
Case "System.Boolean"
                
Return SqlDbType.Bit
            
Case "System.Byte"
                
Return SqlDbType.TinyInt
            
Case "System.Char"
                
Return SqlDbType.Char
            
Case "System.DateTime"
                
Return SqlDbType.DateTime
            
Case "System.Decimal"
                
Return SqlDbType.Decimal
            
Case "System.Double"
                
Return SqlDbType.Float
            
Case "System.Int16"
                
Return SqlDbType.SmallInt
            
Case "System.Int32"
                
Return SqlDbType.Int
            
Case "System.Int64"
                
Return SqlDbType.BigInt
            
Case "System.SByte"
                
Return SqlDbType.SmallInt
            
Case "System.Single"
                
Return SqlDbType.Real
            
Case "System.String"
                
Return SqlDbType.Char
            
Case "System.TimeSpan"
                
Return SqlDbType.Timestamp
            
Case "System.UInt16"
                
Return SqlDbType.SmallInt
            
Case "System.UInt32"
                
Return SqlDbType.Int
            
Case "System.UInt64"
                
Return SqlDbType.BigInt
            
Case Else
                
Return SqlDbType.Variant
        
End Select
    
End Function



End Class

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C 语言变量存储

bss段: BSS段(bsssegment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文BlockStarted by Symbol的简称。BSS段属于静态内存分配。 ...

#define A(x) T_##x

宏的单行定义 #define A(x) T_##x #define B(x) #@x #define C(x) #x 我们假设:x=1,则有: A(1)------〉T_1 B(1)------〉'...

va_start、va_arg、va_end使用详解

va_start和va_end使用详解   本文主要介绍va_start和va_end的使用及原理。   在以前的一篇帖子Format MessageBox 详解中曾使用到va_s...

C#使用SqlDataAdapter.Update更新数据库

http://www.cnblogs.com/ChangTan/archive/2011/12/27/2303901.html 此处将资料从数据库得出后显在DataGridVie...

C#中DataSet、SqlDataAdapter的使用-关于数据库操作

DataSet表示数据在内存中的缓存。 我的理解是,在内存中的数据表,需要引用using System.Data; SqlDataAdapter表示用于填充 DataSet 和更新 SQL Serve...

关于SqlDataAdapter的Update()方法

关于SqlDataAdapter的Update()方法 分类: 代码参考2011-07-04 17:16 1人阅读 评论(0) 收藏 举报 运用SqlDataAdapter的Upd...

关于SqlDataAdapter的Update()方法

运用SqlDataAdapter的Update()方法可以很方便的将对一张数据表进行的大量修改批量更新的数据库中,但是这个函数的批量更新到底是怎么实现的,有什么需要注意的地方,我仅以我自己的理解,以及...
  • binbr
  • binbr
  • 2011-07-04 17:16
  • 307

SqlDataAdapter.Update批量数据更新

使用SqlDataAdapter.Update可以方便地对数据库进行快速、批量数据更新。我们最常用的多条数据更新方法是使用循环多次执行SQL语句或存储过程,这样虽然方便,但由于连接和数据传递要在服务器...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)