protected int updateDeathLog() { int retVal = 0; string connString = Dts.Variables["ConnString1"].Value.ToString(); string sql = "SELECT ObjectId, NewFileName, PageNum, TargetFileExists, TargetFileExistsDT " + "FROM MyTable WHERE SourceFileExists = 1 AND TargetFileExists = 0"; using (SqlConnection conn = new SqlConnection(connString)) { try { conn.Open(); SqlCommand cmd = new SqlCommand(sql, conn); SqlDataAdapter adapter = new SqlDataAdapter(cmd); string newFileFullPath = String.Empty; DataTable dt = new DataTable(); adapter.Fill(dt); foreach(DataRow row in dt.Rows) { // If files exists in target folder, update flags and // datetime field in the DataTable. newFileFullPath = Dts.Variables["TargetFolderDeath"].Value.ToString() + "\\" + row["NewFileName"].ToString(); if(File.Exists(newFileFullPath)) { row["TargetFileExists"] = true; row["TargetFileExistsDT"] = DateTime.Now; } else { row["TargetFileExists"] = false; row["TargetFileExistsDT"] = System.DBNull.Value; } } // Commit update DataTable to the MyTable. // Prior to the commit, set up primary keys in the DataTable // and create a CommandBuilder. DataColumn[] keyColumns = new DataColumn[2]; keyColumns[0] = dt.Columns["ObjectId"]; keyColumns[1] = dt.Columns["PageNum"]; dt.PrimaryKey = keyColumns; SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapter); adapter.Update(dt); retVal = dt.Rows.Count; } catch (Exception ex) { retVal = -1; errorMsg = ex.Message; stackTrace = ex.StackTrace; } } return retVal; }
Wednesday, March 23, 2016
How to Update DataTable and Commit it to the Database
In SSIS Script Task, it seems helpful to use a select statement to consturct a DataTable, update the DataTable as necessary, and commit the DataTable back to database's table. Below is a working example of this case.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment