/[AnywhereTS-MSSQL]/trunk/AnywhereTS.DBSupport/DBConnector.cs
ViewVC logotype

Diff of /trunk/AnywhereTS.DBSupport/DBConnector.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 89 by william, Fri Jul 13 22:56:50 2012 UTC revision 128 by william, Sat Jul 14 13:01:52 2012 UTC
# Line 5  using System.Data.SqlClient; Line 5  using System.Data.SqlClient;
5  using System.Data.Common;  using System.Data.Common;
6  using System.Data;  using System.Data;
7  using System.Text.RegularExpressions;  using System.Text.RegularExpressions;
8    using System.IO;
9    
10    
11  namespace AnywhereTS.DBSupport  namespace AnywhereTS.DBSupport
12  {  {
# Line 34  namespace AnywhereTS.DBSupport Line 36  namespace AnywhereTS.DBSupport
36          where DBDataAdapter : DbDataAdapter, new()          where DBDataAdapter : DbDataAdapter, new()
37      {      {
38    
39          public DBConnector(string Address, string Instance, string Database)          public DBConnector(string Server, string Instance, string Database)
40          {          {
41              DBServerAddress = Address;              DBServerAddress = Server;
42              DBServerInstance = Instance;              DBServerInstance = Instance;
43              DBDatabase = Database;              DBDatabase = Database;
44                using (log4net.NDC.Push(string.Format("[Server={0}] [Instance={1}] [Database={2}]", Server, Instance, Database)))
45                {
46                    Logging.DatabaseLog.Debug("Creating DBConnector instance");
47                }
48          }          }
49    
50          public static string GetConnectionString()          public static string GetConnectionString()
51          {          {
52              return string.Format(@"Data Source={0}\{1};Initial Catalog={2};Integrated Security=SSPI", DBServerAddress, DBServerInstance, DBDatabase);              return string.Format(@"Data Source={0}\{1};Database={2};Integrated Security=SSPI", DBServerAddress, DBServerInstance, DBDatabase);
53          }          }
54          protected DBConnection connection;          protected DBConnection connection;
55          #region DBServerAddress, DBServerInstance, DBDatabase          #region DBServerAddress, DBServerInstance, DBDatabase
# Line 73  namespace AnywhereTS.DBSupport Line 79  namespace AnywhereTS.DBSupport
79              }              }
80              catch (SqlException ex)              catch (SqlException ex)
81              {              {
82                  using (log4net.NDC.Push(string.Format("SqlException: ID={0} MESSAGE={1}{2}Diagnostics:{2}{3}", ex.Number.ToString(), ex.Message, System.Environment.NewLine, ex.ToString())))                  SqlException e = (ex.GetBaseException() as SqlException);
83                    using (log4net.NDC.Push(string.Format("SqlException: ID={0} MESSAGE={1}{2}Diagnostics:{2}{3}", e.Number.ToString(), e.Message, System.Environment.NewLine, e.ToString())))
84                  {                  {
85                      Logging.DatabaseLog.Error(string.Format("Failed to create command instance using command: {0}", command));                      Logging.DatabaseLog.Error(string.Format("Failed to create command instance using command: {0}", command));
86                  }                  }
# Line 81  namespace AnywhereTS.DBSupport Line 88  namespace AnywhereTS.DBSupport
88              }              }
89              catch (Exception ex)              catch (Exception ex)
90              {              {
91                  using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", ex.GetType().Name, ex.Message, System.Environment.NewLine, ex.ToString())))                  Exception e = ex.GetBaseException();
92                    using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", e.GetType().Name, e.Message, System.Environment.NewLine, e.ToString())))
93                  {                  {
94                      Logging.DatabaseLog.Error(string.Format("Failed to create command instance using command: {0}", command));                      Logging.DatabaseLog.Error(string.Format("Failed to create command instance using command: {0}", command));
95                  }                  }
# Line 93  namespace AnywhereTS.DBSupport Line 101  namespace AnywhereTS.DBSupport
101          public virtual void CreateConnection(out Exception ErrorInfo)          public virtual void CreateConnection(out Exception ErrorInfo)
102          {          {
103              ErrorInfo = null;              ErrorInfo = null;
104                string connetionString = string.Empty;
105              try              try
106              {              {                
                 string connetionString = null;  
107                  connetionString = GetConnectionString();                  connetionString = GetConnectionString();
108                  connection = new DBConnection();                  using (log4net.NDC.Push(string.Format("connetionString={0}", connetionString)))
109                  connection.ConnectionString = connetionString;                  {
110                        Logging.DatabaseLog.Debug("Creating Connection");
111                        connection = new DBConnection();
112                        connection.ConnectionString = connetionString;
113                        Logging.DatabaseLog.Debug("Created Connection");
114                    }
115              }              }
116              catch (SqlException ex)              catch (SqlException ex)
117              {              {
# Line 122  namespace AnywhereTS.DBSupport Line 135  namespace AnywhereTS.DBSupport
135          public virtual void OpenConnection(out Exception ErrorInfo)          public virtual void OpenConnection(out Exception ErrorInfo)
136          {          {
137              ErrorInfo = null;              ErrorInfo = null;
138                string connetionString = string.Empty;
139              try              try
140              {              {
141                  //this.CloseConnection(out ErrorInfo);                  //this.CloseConnection(out ErrorInfo);
142                  connection.Open();                  connetionString = GetConnectionString();
143                  this.ConnectionIsOpen = true;                  using (log4net.NDC.Push(string.Format("connectionString={0}", connetionString)))
144                    {
145                        Logging.DatabaseLog.Debug("Opening Connection");
146                        connection.Open();
147                        this.ConnectionIsOpen = true;
148                        Logging.DatabaseLog.Debug("Opened Connection");
149                    }
150              }              }
151              //catch (SqlException ex) { Console.WriteLine(ex.ToString()); ErrorInfo = ex;  throw ErrorInfo;}              //catch (SqlException ex) { Console.WriteLine(ex.ToString()); ErrorInfo = ex;  throw ErrorInfo;}
152              catch (SqlException ex)              catch (SqlException ex)
# Line 283  namespace AnywhereTS.DBSupport Line 303  namespace AnywhereTS.DBSupport
303          }          }
304          #endregion          #endregion
305          #region public string[] ParseScriptToCommands(string strScript)          #region public string[] ParseScriptToCommands(string strScript)
306          public string[] ParseScriptToCommands(string strScript)      
307          {          protected abstract bool ClientRunScript(string strFile, out Exception ErrorInfo);
             string[] commands;  
             commands = Regex.Split(strScript, "GO\r\n", RegexOptions.IgnoreCase);  
             return commands;  
         }  
308          #endregion          #endregion
309          #region public virtual bool RunScript(string strFile, out Exception ErrorInfo)          #region public virtual bool RunScript(string strFile, out Exception ErrorInfo)
310          public virtual bool RunScript(string strFile, out Exception ErrorInfo)          public bool RunScript(string strFile, out Exception ErrorInfo)
311          {          {
312              ErrorInfo = null;              ErrorInfo = null;
313              try              try
314              {              {
                 string[] strCommands;  
                 strCommands = ParseScriptToCommands(strFile);  
315                  if (this.ConnectionIsOpen)                  if (this.ConnectionIsOpen)
316                  {                  {
317                      foreach (string strCmd in strCommands)                      if (!ClientRunScript(strFile, out ErrorInfo))
318                      {                      {
319                          if (strCmd.Length > 0)                          if(ErrorInfo != null)
320                          {                              throw ErrorInfo;
321                              // Substitute database directory with the decided one.                          return false;
                             DBCommand command = this.CreateCommandInstance(strCmd, new List<DBParameter>(), out ErrorInfo);  
                             command.ExecuteNonQuery();  
                         }  
322                      }                      }
                     return true;  
323                  }                  }
324                  else                  else
325                  {                  {
326                      Logging.ATSAdminLog.Fatal(string.Format("Failed to run script: [database connection is not open] {0}{1}", System.Environment.NewLine, strFile));                      Logging.DatabaseLog.Fatal(string.Format("Failed to run script: [database connection is not open] {0}{1}", System.Environment.NewLine, strFile));
327                      return false;                      return false;
328                  }                  }
329              }              }
330              catch (SqlException ex)              catch (SqlException ex)
331              {              {
332                  using (log4net.NDC.Push(string.Format("SqlException: ID={0} MESSAGE={1}{2}Diagnostics:{2}{3}", ex.Number.ToString(), ex.Message, System.Environment.NewLine, ex.ToString())))                  SqlException e = (ex.GetBaseException() as SqlException);
333                    using (log4net.NDC.Push(string.Format("SqlException: ID={0} MESSAGE={1}{2}Diagnostics:{2}{3}", e.Number.ToString(), e.Message, System.Environment.NewLine, e.ToString())))
334                  {                  {
335                      Logging.DatabaseLog.Error(string.Format("Failed to run script: {0}{1}", System.Environment.NewLine, strFile));                      Logging.DatabaseLog.Error(string.Format("Failed to run script: {0}{1}", System.Environment.NewLine, strFile));
336                  }                  }
337                  ErrorInfo = ex;                  ErrorInfo = ex; throw ErrorInfo;
338              }              }
339              catch (Exception ex)              catch (Exception ex)
340              {              {
341                  using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", ex.GetType().Name, ex.Message, System.Environment.NewLine, ex.ToString())))                  Exception e = ex.GetBaseException();
342                    using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", e.GetType().Name, e.Message, System.Environment.NewLine, e.ToString())))
343                  {                  {
344                      Logging.DatabaseLog.Error(string.Format("Failed to run script: {0}{1}", System.Environment.NewLine, strFile));                      Logging.DatabaseLog.Error(string.Format("Failed to run script: {0}{1}", System.Environment.NewLine, strFile));
345                  }                  }
346                  ErrorInfo = ex;                  ErrorInfo = ex; throw ErrorInfo;
347              }              }
348              return false;              return false;
349          }          }

Legend:
Removed from v.89  
changed lines
  Added in v.128

  ViewVC Help
Powered by ViewVC 1.1.22