通过 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(dataTable)方法

C#用来更新数据库的方式有两种(暂时我知道两种)一种就是sql语句的update,第二种就是我接下来要说的SqlDataAdapter的Update()方法。运用SqlDataAdapter的Upda...
  • lxj1137800599
  • lxj1137800599
  • 2016年07月13日 18:23
  • 4313

通过DataSet更新数据库

  SqlConnection con = new SqlConnection("server=(local); integrated security=SSPI;database=Mange");S...
  • tianhuo_soft
  • tianhuo_soft
  • 2008年12月17日 17:34
  • 658

把dataset中的数据更新回 数据库

,C#使用TheSQL Server .NET Data Provider中的SqlDataAdapter填充DataSet的具体实现方法:   代码清单01: S...
  • kankankankan2222
  • kankankankan2222
  • 2012年04月13日 11:44
  • 3684

通过DataSet 对象更新数据库

google_ad_client = "pub-2048279401139630";google_ad_slot = "8856771542";google_ad_width = 728;google...
  • aspgreener
  • aspgreener
  • 2007年11月07日 00:09
  • 381

通过DataSet更新、插入数据库

 方法一: //与SQL Server的连接字符串设置 private string _connString; private string _strSql; private SqlCommandBu...
  • backslash
  • backslash
  • 2010年10月25日 16:53
  • 1376

.NET 批量插入数据,DataSet, SqlDataAdapter.Update

在.NET中可以利用SqlDataAdapter类的Update方法批量把数据更新到数据库,这样可以提高写入数据库的工作效率, 减少操作数据频率,减轻数据库压力。 方法的使用详细可以参看M...
  • lhrhi
  • lhrhi
  • 2012年08月29日 11:16
  • 4870

用SqlDataAdapter.Update(DataSet Ds)更新数据库

一. 用SqlDataAdapter.Update(DataSet Ds)更新数据库.1. DbDataAdapter调用 Update 方法时,DataAdapter 将分析已作出的更改并执行相应的...
  • dream_perfect
  • dream_perfect
  • 2009年09月15日 11:04
  • 456

DataSet无法找到表?

DataAdapter可以填充DataTablehttp://community.csdn.net/Expert/topic/4731/4731632.xml?temp=.7322809...
  • feifeile
  • feifeile
  • 2006年05月05日 18:23
  • 938

对DataTable(或者DataSet)修改后,提交修改到数据库

说明:通常我们在做数据库交互时,并不一定要使用特定的SQL语句来更新数据,.NET Framwork为我们提供了自动更新的功能 public static void UpdateTable() ...
  • nidexuanzhe
  • nidexuanzhe
  • 2012年11月27日 10:28
  • 6530

C#实现用DataSet来更新数据库

  好像从Excel中读取出来的DataSet不能用这种方法更新,还没找到原因,希望能尽快解决。/**////         /// 用DataSet更新数据库        ///        ...
  • holyrong
  • holyrong
  • 2007年09月10日 10:59
  • 2736
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通过 SqlDataAdapter.update 方法通过DataSet更新数据库
举报原因:
原因补充:

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