일괄 테이블 데이터 테이블에 도입

 

데이터 동기화에 대한 데이터 테이블에 일괄 제출 포장

GetSelectFieldNames 문자열 비공개 (DataTable에 DataTable을, 문자열 TABLENAME = "", strWhere 문자열 = "") 
{ 
IF (DataTable에 == 널 (null) || dataTable.Columns.Count == 0) 
{ 
반환 ""; 
} 
IF (tableName.NotHasValue () ) 
{ 
TABLENAME = dataTable.TableName; 
} 
VAR 열 = (dataTable.Columns column.ColumnName의 DataColumn에 열에서 선택) .ToList (); 

문자열 strColumns String.Join = ( ","열) 
문자열 및 String.format = STRSQL (, strColumns, TABLENAME, strWhere. "{0} {2} {1}에서 선택") 
STRSQL를 반환; 
} 

/// <요약> 
/// 벌크 전체 테이블 데이터 동기화 
지정된 경우를 지원하는 방법을 /// 필드 에러의 상세한 내용 
/// </ 요약> 
/// <매개 변수 이름 = "데이터 테이블"> </ PARAM>
/// <PARAM NAME = "toTableName"> </ PARAM> 
/// <리턴> </ 반품> 
공공 부울 BulkCopyToDataTable (DataTable에 DataTable을, 문자열 toTableName = "") 
{ 
경우 (데이터 테이블 == 널 || dataTable.Rows .Count == 0) 
{ 
Tools.Debug ( "提交的表为空"); 
true를 반환; 
} 
경우 (toTableName.NotHasValue ()) 
{ 
toTableName = dataTable.TableName; 
} 
Tools.Debug ( "一共提交"+ dataTable.Rows.Count + "条数据到"+ toTableName); 

사용 (VAR 연결 = 새도록 SqlConnection (DbConnectionString)) 
{ 

문자열 strSelectSql GetSelectFieldNames = (데이터 테이블, toTableName "여기서 1 = 2"); 
SqlTransaction 트란 = NULL;
VAR newDatatable = 새로운 DataTable의 (); 
사용 (VAR의 myDataAdapter = 새로운 SqlDataAdapter를 (strSelectSql 접속)) 
{ 

myDataAdapter.Fill (newDatatable); 
대 (INT의 J = 0; J <dataTable.Rows.Count, J ++) 
{ 
newDatatable.Rows.Add (dataTable.Rows [J] .ItemArray); 
} 

하여 (VAR의 sqlcommanBuilder = 새로운 데 SqlCommandBuilder (myDataAdapter)) 
{ 
트란 connection.BeginTransaction = (); 
myDataAdapter.SelectCommand.Transaction = 트란; 
myDataAdapter.Update (newDatatable); 
tran.Commit (); 
} 
myDataAdapter.Dispose (); 
} 
} 
캐치 (SQLEXCEPTION 예) 
{ 
경우 (트란 = 널!) tran.Rollback ();
Tools.Debug (및 String.format ( "동기화 플랫폼 테이블은 : {0}, 데이터베이스를 실행 : {1}, 에러가 {2}"toTableName, DBConnectionString, ex.Message)); 
Tools.Error (EX) 
거짓으로 반환 ; 
} 
} 
; true로 돌아 
}

  

추천

출처www.cnblogs.com/songconglai/p/11355838.html