데이터 동기화에 대한 데이터 테이블에 일괄 제출 포장
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로 돌아 }