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

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

 

Public Class DateSetDemoClass 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()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()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()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()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()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#使用SqlDataAdapter.Update更新数据库

http://www.cnblogs.com/ChangTan/archive/2011/12/27/2303901.html 此处将资料从数据库得出后显在DataGridVie...
  • wyqlxy
  • wyqlxy
  • 2012年04月11日 13:06
  • 665

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

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

C#使用SqlDataAdapter的Update方法更新数据

sql语法: Update one Column in a Row 更新记录行中的一个栏目 We want to add a first name to the person with a ...

关于SqlDataAdapter的Update()方法

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

关于SqlDataAdapter的Update()方法

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

SqlDataAdapter.Update批量数据更新

使用SqlDataAdapter.Update可以方便地对数据库进行快速、批量数据更新。我们最常用的多条数据更新方法是使用循环多次执行SQL语句或存储过程,这样虽然方便,但由于连接和数据传递要在服务器...

[C#新手入门 二] SqlDataAdapter.Update批量数据更新

SqlDataAdapter.Update批量数据更新 使用SqlDataAdapter.Update可以方便地对数据库进行快速、批量数据更新。我们最常用的多条数据更新方法是使用循环多次执行SQL...

C#使用DataSet Datatable更新数据库的三种实现方法

 这篇文章主要介绍了C#使用DataSet Datatable更新数据库的三种实现方法,需要的朋友可以参考下 本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法...

【转】C#使用DataSet Datatable更新数据库的三种实现方法

转自:http://www.jb51.net/article/54418.htm 这篇文章主要介绍了C#使用DataSet Datatable更新数据库的三种实现方法,需要的朋友可以参考下 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通过 SqlDataAdapter.update 方法通过DataSet更新数据库
举报原因:
原因补充:

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