public static void BackupTable(string tablename, BackupFile file, TableDefn table) { file.AppendLine(" <" + Pluralizer.Pluralize(tablename) + ">"); string query = "SELECT " + table.SelectCols() + " FROM " + tablename + ";"; IDbConnection dbConn = Connection.Me.GetConnection(); try { dbConn.Open(); IDbCommand dbCmd = dbConn.CreateCommand(); dbCmd.CommandType = CommandType.Text; dbCmd.CommandText = query; using (IDataReader rdr = dbCmd.ExecuteReader()) { while (rdr.Read()) { file.AppendLine(" <" + tablename + ">"); for (int i = 0; i < rdr.FieldCount; i++) { //Console.WriteLine(rdr.GetName(i) + "=" + rdr.GetValue(i).ToString()); string key = rdr.GetName(i); object fldvalue = rdr.GetValue(i); if (fldvalue != DBNull.Value) { fldvalue = Convert.ChangeType(fldvalue, rdr.GetFieldType(i)); string clrtype = table.FindColumn(key).CLRType().Name; if (fldvalue != null) { file.AppendLine(" <" + key + ">" + FormatValue(fldvalue, clrtype) + "</" + key + ">"); } } } file.AppendLine(" </" + tablename + ">"); } } } catch (Exception ex) { throw new Exception("There was a problem loading table from query [" + query + "] - " + ex.Message, ex); } finally { dbConn.Close(); dbConn = null; } file.AppendLine(" </" + Pluralizer.Pluralize(tablename) + ">"); }
public static void BackupDatabase(string server, string database, string repository, Builder definition) { BackupFile f = new BackupFile(repository, database); f.DeleteIfExists(); f.AppendLine("<?xml version=\"1.0\"?>"); f.AppendLine("<" + database + ">"); foreach (TableDefn t in definition.Tables) { BackupTable(t.TableName, f, t); } f.AppendLine("</" + database + ">"); Tools.Zip(f.ChangeExt(f.FileNameToday, "zip"), f.FileNameToday); File.Delete(f.FileNameToday); }