/[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 132 by william, Sun Jul 15 03:09:38 2012 UTC revision 133 by william, Sun Jul 15 05:00:59 2012 UTC
# Line 16  namespace AnywhereTS.DBSupport Line 16  namespace AnywhereTS.DBSupport
16          where DBConnection : DbConnection, new()          where DBConnection : DbConnection, new()
17          where DBDataAdapter : DbDataAdapter, new()          where DBDataAdapter : DbDataAdapter, new()
18      {      {
19            bool ConnectionIsCreated { get; }
20          bool ConnectionIsOpen { get; }          bool ConnectionIsOpen { get; }
21          DBConnection CreateConnection(out Exception ErrorInfo);          void CreateConnection(out Exception ErrorInfo);
22          void OpenConnection(out Exception ErrorInfo);          void OpenConnection(out Exception ErrorInfo);
23    
24            void GetConnectionClone(out DBConnection connection, out Exception ErrorInfo);
25    
26          void CloseConnection(out Exception ErrorInfo);          void CloseConnection(out Exception ErrorInfo);
27    
28          DbDataReader ExecuteQuery(string command, List<DBParameter> Params, out Exception ErrorInfo);          DbDataReader ExecuteQuery(string command, List<DBParameter> Params, out Exception ErrorInfo);
# Line 61  namespace AnywhereTS.DBSupport Line 65  namespace AnywhereTS.DBSupport
65          private string SafeSqlLiteral(string inputSQL) { return inputSQL.Replace("'", "''"); }          private string SafeSqlLiteral(string inputSQL) { return inputSQL.Replace("'", "''"); }
66          #endregion          #endregion
67          #region IDBConnector members          #region IDBConnector members
68            #region  public virtual bool ConnectionIsCreated
69            public virtual bool ConnectionIsCreated { get; protected set; }
70            #endregion
71          #region  public virtual bool ConnectionIsOpen          #region  public virtual bool ConnectionIsOpen
72          public virtual bool ConnectionIsOpen { get; protected set; }          public virtual bool ConnectionIsOpen { get; protected set; }
73          #endregion          #endregion
# Line 97  namespace AnywhereTS.DBSupport Line 104  namespace AnywhereTS.DBSupport
104          //    }          //    }
105          //}          //}
106          #endregion          #endregion
107            #region public virtual void GetConnectionClone(ref DBConnection connection)
108            public virtual void GetConnectionClone(out DBConnection connection, out Exception ErrorInfo)
109            {
110                ErrorInfo = null;
111                connection = this.connection;
112            }
113            #endregion
114          #region  public virtual DBConnection CreateConnection(out Exception ErrorInfo)          #region  public virtual DBConnection CreateConnection(out Exception ErrorInfo)
115          public virtual DBConnection CreateConnection(out Exception ErrorInfo)          public virtual void CreateConnection(out Exception ErrorInfo)
116          {          {
117              ErrorInfo = null;              ErrorInfo = null;
118              string connetionString = string.Empty;              string connetionString = string.Empty;
119              try              try
120              {                              {
121                  connetionString = GetConnectionString();                  if (!this.ConnectionIsCreated)
122                  using (log4net.NDC.Push(string.Format("connetionString={0}", connetionString)))                  {
123                        connetionString = GetConnectionString();
124                        using (log4net.NDC.Push(string.Format("connetionString={0}", connetionString)))
125                        {
126                            Logging.DatabaseLog.Debug("Creating Connection");
127                            connection = new DBConnection();
128                            connection.ConnectionString = connetionString;
129                            Logging.DatabaseLog.Debug("Created Connection");
130                            this.ConnectionIsCreated = true;
131                        }
132                    }
133                    else
134                  {                  {
135                      Logging.DatabaseLog.Debug("Creating Connection");                      throw new Exception("Connection has already been created.");
                     connection = new DBConnection();  
                     connection.ConnectionString = connetionString;  
                     Logging.DatabaseLog.Debug("Created Connection");  
136                  }                  }
                 return this.connection;  
137              }              }
138              catch (SqlException ex)              catch (SqlException ex)
139              {              {
140                    this.ConnectionIsCreated = false;
141                  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())))                  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())))
142                  {                  {
143                      Logging.DatabaseLog.Error(string.Format("Failed to create connection to {0} Database", DBDatabase));                      Logging.DatabaseLog.Error(string.Format("Failed to create connection to {0} Database", DBDatabase));
# Line 124  namespace AnywhereTS.DBSupport Line 146  namespace AnywhereTS.DBSupport
146              }              }
147              catch (Exception ex)              catch (Exception ex)
148              {              {
149                    this.ConnectionIsCreated = false;
150                  using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", ex.GetType().Name, ex.Message, System.Environment.NewLine, ex.ToString())))                  using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", ex.GetType().Name, ex.Message, System.Environment.NewLine, ex.ToString())))
151                  {                  {
152                      Logging.DatabaseLog.Error(string.Format("Failed to create connection to {0} Database", DBDatabase));                      Logging.DatabaseLog.Error(string.Format("Failed to create connection to {0} Database", DBDatabase));
# Line 139  namespace AnywhereTS.DBSupport Line 162  namespace AnywhereTS.DBSupport
162              string connetionString = string.Empty;              string connetionString = string.Empty;
163              try              try
164              {              {
165                  //this.CloseConnection(out ErrorInfo);                  if (this.ConnectionIsCreated && this.ConnectionIsOpen)
166                        this.CloseConnection(out ErrorInfo);
167                    if (!this.ConnectionIsCreated)
168                        this.CreateConnection(out ErrorInfo);
169                  connetionString = GetConnectionString();                  connetionString = GetConnectionString();
170                  using (log4net.NDC.Push(string.Format("connectionString={0}", connetionString)))                  using (log4net.NDC.Push(string.Format("connectionString={0}", connetionString)))
171                  {                  {
172                      Logging.DatabaseLog.Debug("Opening Connection");                      Logging.DatabaseLog.Debug("Opening Connection");
173                      connection.Open();                      connection.Open();  
174                      this.ConnectionIsOpen = true;                      this.ConnectionIsOpen = true;
175                      Logging.DatabaseLog.Debug("Opened Connection");                      Logging.DatabaseLog.Debug("Opened Connection");
176                  }                  }
177              }              }
178              //catch (SqlException ex) { Console.WriteLine(ex.ToString()); ErrorInfo = ex;  throw ErrorInfo;}              //catch (SqlException ex) { Console.WriteLine(ex.ToString()); ErrorInfo = ex;  throw ErrorInfo;}
179              catch (SqlException ex)              catch (SqlException ex)
180              {              {
181                    this.ConnectionIsOpen = false;
182                  if (ex.Message.ToLower().Contains(string.Format("Cannot open database").ToLower()))                  if (ex.Message.ToLower().Contains(string.Format("Cannot open database").ToLower()))
183                  {                  {
184                      ErrorInfo = null;                      ErrorInfo = null;
                     return;  
185                  }                  }
186                  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())))                  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())))
187                  {                  {
# Line 165  namespace AnywhereTS.DBSupport Line 191  namespace AnywhereTS.DBSupport
191              }              }
192              catch (Exception ex)              catch (Exception ex)
193              {              {
194                    this.ConnectionIsOpen = false;
195                  if (ex.Message.ToLower().Contains(string.Format("Cannot open database").ToLower()))                  if (ex.Message.ToLower().Contains(string.Format("Cannot open database").ToLower()))
196                  {                  {
197                      ErrorInfo = null;                      ErrorInfo = null;
                     return;  
198                  }                  }
199                  using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", ex.GetType().Name, ex.Message, System.Environment.NewLine, ex.ToString())))                  using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", ex.GetType().Name, ex.Message, System.Environment.NewLine, ex.ToString())))
200                  {                  {
# Line 185  namespace AnywhereTS.DBSupport Line 211  namespace AnywhereTS.DBSupport
211              try              try
212              {              {
213                  if (this.ConnectionIsOpen)                  if (this.ConnectionIsOpen)
214                    {
215                      connection.Close();                      connection.Close();
216                        this.ConnectionIsOpen = false;
217                        this.ConnectionIsCreated = false;
218                        this.connection = null;
219                    }
220              }              }
221              catch (SqlException ex)              catch (SqlException ex)
222              {              {

Legend:
Removed from v.132  
changed lines
  Added in v.133

  ViewVC Help
Powered by ViewVC 1.1.22