/[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

--- trunk/AnywhereTS.DBSupport/DBConnector.cs	2012/07/13 22:37:40	87
+++ trunk/AnywhereTS.DBSupport/DBConnector.cs	2012/07/14 09:40:33	121
@@ -24,7 +24,7 @@
         List<string> ExecuteColumnNamesReader(string command, List<DBParameter> Params, out Exception ErrorInfo);
 
         DBCommand CreateCommandInstance(string command, List<DBParameter> Params, out Exception ErrorInfo);
-        public bool RunScript(string strFile, MsSqlConnector con, out Exception ErrorInfo);
+        bool RunScript(string strFile, out Exception ErrorInfo);
     }
     public abstract class DBConnector<DBParameter, DBCommand, DBConnection, DBDataAdapter> :
         IDBConnector<DBParameter, DBCommand, DBConnection, DBDataAdapter>
@@ -34,20 +34,36 @@
         where DBDataAdapter : DbDataAdapter, new()
     {
 
-        public DBConnector(string DBServerAddress, string DBServerInstance, string DBDatabase)
+        public DBConnector(string Server, string Instance, string Database)
         {
-            this.DBServerAddress = DBServerAddress;
-            this.DBServerInstance = DBServerInstance;
-            this.DBDatabase = DBDatabase;
+            DBServerAddress = Server;
+            DBServerInstance = Instance;
+            DBDatabase = Database;
+            using (log4net.NDC.Push(string.Format("[Server={0}] [Instance={1}] [Database={2}]", Server, Instance, Database)))
+            {
+                Logging.DatabaseLog.Debug("Creating DBConnector instance");
+            }
         }
 
+        public static string GetConnectionString()
+        {
+            return string.Format(@"Data Source={0}\{1};Database={2};Integrated Security=SSPI", DBServerAddress, DBServerInstance, DBDatabase);
+        }
         protected DBConnection connection;
-        protected string DBServerAddress = "";
-        protected string DBServerInstance = "";
-        protected string DBDatabase = "";
+        #region DBServerAddress, DBServerInstance, DBDatabase
+        internal static string DBServerAddress = "";
+        internal static string DBServerInstance = "";
+        internal static string DBDatabase = "";
+        #endregion
+        #region  private string SafeSqlLiteral(string inputSQL)
         private string SafeSqlLiteral(string inputSQL) { return inputSQL.Replace("'", "''"); }
+        #endregion
         #region IDBConnector members
-        public DBCommand CreateCommandInstance(string command, List<DBParameter> Params, out Exception ErrorInfo)
+        #region  public virtual bool ConnectionIsOpen
+        public virtual bool ConnectionIsOpen { get; protected set; }
+        #endregion
+        #region public virtual DBCommand CreateCommandInstance(string command, List<DBParameter> Params, out Exception ErrorInfo)
+        public virtual DBCommand CreateCommandInstance(string command, List<DBParameter> Params, out Exception ErrorInfo)
         {
             ErrorInfo = null;
             try
@@ -74,19 +90,24 @@
                     Logging.DatabaseLog.Error(string.Format("Failed to create command instance using command: {0}", command));
                 }
                 ErrorInfo = ex; throw ErrorInfo;
-            } 
+            }
         }
-        private bool _ConnectionIsOpen;
-        public virtual bool ConnectionIsOpen { get { return _ConnectionIsOpen; } protected set { _ConnectionIsOpen = value; } }
+        #endregion
+        #region  public virtual void CreateConnection(out Exception ErrorInfo)
         public virtual void CreateConnection(out Exception ErrorInfo)
         {
             ErrorInfo = null;
+            string connetionString = string.Empty;
             try
-            {
-                string connetionString = null;
-                connetionString = string.Format(@"Data Source={0}\{1};Initial Catalog={2};Integrated Security=SSPI", DBServerAddress, DBServerInstance, DBDatabase);
-                connection = new DBConnection();
-                connection.ConnectionString = connetionString;
+            {                
+                connetionString = GetConnectionString();
+                using (log4net.NDC.Push(string.Format("connetionString={0}", connetionString)))
+                {
+                    Logging.DatabaseLog.Debug("Creating Connection");
+                    connection = new DBConnection();
+                    connection.ConnectionString = connetionString;
+                    Logging.DatabaseLog.Debug("Created Connection");
+                }
             }
             catch (SqlException ex)
             {
@@ -103,16 +124,25 @@
                     Logging.DatabaseLog.Error(string.Format("Failed to create connection to {0} Database", DBDatabase));
                 }
                 ErrorInfo = ex; throw ErrorInfo;
-            } 
+            }
         }
+        #endregion
+        #region public virtual void OpenConnection(out Exception ErrorInfo)
         public virtual void OpenConnection(out Exception ErrorInfo)
         {
             ErrorInfo = null;
+            string connetionString = string.Empty;
             try
             {
                 //this.CloseConnection(out ErrorInfo);
-                connection.Open();
-                this.ConnectionIsOpen = true;
+                connetionString = GetConnectionString();
+                using (log4net.NDC.Push(string.Format("connectionString={0}", connetionString)))
+                {
+                    Logging.DatabaseLog.Debug("Opening Connection");
+                    connection.Open();
+                    this.ConnectionIsOpen = true;
+                    Logging.DatabaseLog.Debug("Opened Connection");
+                }
             }
             //catch (SqlException ex) { Console.WriteLine(ex.ToString()); ErrorInfo = ex;  throw ErrorInfo;}
             catch (SqlException ex)
@@ -130,8 +160,10 @@
                     Logging.DatabaseLog.Error(string.Format("Failed to open connection to {0} Database", DBDatabase));
                 }
                 ErrorInfo = ex; throw ErrorInfo;
-            } 
+            }
         }
+        #endregion
+        #region public virtual void CloseConnection(out Exception ErrorInfo)
         public virtual void CloseConnection(out Exception ErrorInfo)
         {
             ErrorInfo = null;
@@ -155,9 +187,10 @@
                     Logging.DatabaseLog.Error(string.Format("Failed to close connection to {0} Database", DBDatabase));
                 }
                 ErrorInfo = ex; throw ErrorInfo;
-            } 
+            }
         }
-
+        #endregion
+        #region public virtual DbDataReader ExecuteQuery(string command, List<DBParameter> Params, out Exception ErrorInfo)
         public virtual DbDataReader ExecuteQuery(string command, List<DBParameter> Params, out Exception ErrorInfo)
         {
             ErrorInfo = null;
@@ -187,8 +220,10 @@
                     Logging.DatabaseLog.Error(string.Format("Failed to execute querey: {0}", command));
                 }
                 ErrorInfo = ex; throw ErrorInfo;
-            } 
+            }
         }
+        #endregion
+        #region public virtual void ExecuteNonQuery(string command, List<DBParameter> Params, out Exception ErrorInfo)
         public virtual void ExecuteNonQuery(string command, List<DBParameter> Params, out Exception ErrorInfo)
         {
             ErrorInfo = null;
@@ -217,8 +252,10 @@
                     Logging.DatabaseLog.Error(string.Format("Failed to execute non querey: {0}", command));
                 }
                 ErrorInfo = ex; throw ErrorInfo;
-            }    
+            }
         }
+        #endregion
+        #region public virtual List<string> ExecuteColumnNamesReader(string command, List<DBParameter> Params, out Exception ErrorInfo)
         public virtual List<string> ExecuteColumnNamesReader(string command, List<DBParameter> Params, out Exception ErrorInfo)
         {
             ErrorInfo = null;
@@ -258,15 +295,19 @@
                     Logging.DatabaseLog.Error(string.Format("Failed to get colum names from reader: {0}", command));
                 }
                 ErrorInfo = ex; throw ErrorInfo;
-            }            
+            }
         }
+        #endregion
+        #region public string[] ParseScriptToCommands(string strScript)
         public string[] ParseScriptToCommands(string strScript)
         {
             string[] commands;
-            commands = Regex.Split(strScript, "GO\r\n", RegexOptions.IgnoreCase);
+            commands = strScript.Split(new string[] { string.Format("GO{0}", System.Environment.NewLine) }, StringSplitOptions.RemoveEmptyEntries);
             return commands;
         }
-        public virtual bool RunScript(string strFile, out Exception ErrorInfo)
+        #endregion
+        #region public virtual bool RunScript(string strFile, out Exception ErrorInfo)
+        public bool RunScript(string strFile, out Exception ErrorInfo)
         {
             ErrorInfo = null;
             try
@@ -275,20 +316,14 @@
                 strCommands = ParseScriptToCommands(strFile);
                 if (this.ConnectionIsOpen)
                 {
-                    foreach (string strCmd in strCommands)
+                    if (!ClientRunScript(strCommands, out ErrorInfo))
                     {
-                        if (strCmd.Length > 0)
-                        {
-                            // Substitute database directory with the decided one.
-                            DBCommand command = this.CreateCommandInstance(strCmd, new List<DBParameter>(), out ErrorInfo);
-                            command.ExecuteNonQuery();
-                        }
+                        return false;
                     }
-                    return true;
                 }
                 else
                 {
-                    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));
                     return false;
                 }
             }
@@ -310,6 +345,8 @@
             }
             return false;
         }
+        public abstract bool ClientRunScript(string[] strCommands, out Exception ErrorInfo);
+        #endregion
         #endregion
 
         #region IDisposable Members

 

  ViewVC Help
Powered by ViewVC 1.1.22