/[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 124 by william, Sat Jul 14 11:14:54 2012 UTC revision 154 by william, Sun Jul 15 13:27:58 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          void 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);
29          void ExecuteNonQuery(string command, List<DBParameter> Params, out Exception ErrorInfo);          void ExecuteNonQuery(string command, List<DBParameter> Params, out Exception ErrorInfo);
30          List<string> ExecuteColumnNamesReader(string command, List<DBParameter> Params, out Exception ErrorInfo);          List<string> ExecuteColumnNamesReader(string command, List<DBParameter> Params, out Exception ErrorInfo);
31    
32          DBCommand CreateCommandInstance(string command, List<DBParameter> Params, out Exception ErrorInfo);          //DBCommand CreateCommandInstance(string command, List<DBParameter> Params, out Exception ErrorInfo);
33          bool RunScript(string strFile, out Exception ErrorInfo);          bool RunScript(string strFile, out Exception ErrorInfo);
34      }      }
35      public abstract class DBConnector<DBParameter, DBCommand, DBConnection, DBDataAdapter> :      public abstract class DBConnector<DBParameter, DBCommand, DBConnection, DBDataAdapter> :
# Line 47  namespace AnywhereTS.DBSupport Line 51  namespace AnywhereTS.DBSupport
51              }              }
52          }          }
53    
54          public static string GetConnectionString()          public static string GetConnectionString(string server, string instance, string database)
55          {          {
56              return string.Format(@"Data Source={0}\{1};Database={2};Integrated Security=SSPI", DBServerAddress, DBServerInstance, DBDatabase);              return string.Format(@"Data Source={0}\{1};Database={2};Integrated Security=SSPI", server, instance, database);
57          }          }
58          protected DBConnection connection;          protected DBConnection connection;
59          #region DBServerAddress, DBServerInstance, DBDatabase          #region DBServerAddress, DBServerInstance, DBDatabase
# 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
74          #region public virtual DBCommand CreateCommandInstance(string command, List<DBParameter> Params, out Exception ErrorInfo)          #region public virtual DBCommand CreateCommandInstance(string command, List<DBParameter> Params, out Exception ErrorInfo)
75          public virtual DBCommand CreateCommandInstance(string command, List<DBParameter> Params, out Exception ErrorInfo)          //public virtual DBCommand CreateCommandInstance(string command, List<DBParameter> Params, out Exception ErrorInfo)
76            //{
77            //    ErrorInfo = null;
78            //    try
79            //    {
80            //        command = this.SafeSqlLiteral(command);
81            //        DBCommand sqlComm = new DBCommand();
82            //        sqlComm.CommandText = command;
83            //        sqlComm.Connection = connection;
84            //        foreach (DBParameter p in Params) { sqlComm.Parameters.Add(p); }
85            //        return sqlComm;
86            //    }
87            //    catch (SqlException ex)
88            //    {
89            //        SqlException e = (ex.GetBaseException() as SqlException);
90            //        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())))
91            //        {
92            //            Logging.DatabaseLog.Error(string.Format("Failed to create command instance using command: {0}", command));
93            //        }
94            //        ErrorInfo = ex; throw ErrorInfo;
95            //    }
96            //    catch (Exception ex)
97            //    {
98            //        Exception e = ex.GetBaseException();
99            //        using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", e.GetType().Name, e.Message, System.Environment.NewLine, e.ToString())))
100            //        {
101            //            Logging.DatabaseLog.Error(string.Format("Failed to create command instance using command: {0}", command));
102            //        }
103            //        ErrorInfo = ex; throw ErrorInfo;
104            //    }
105            //}
106            #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;              ErrorInfo = null;
111              try              connection = this.connection;
             {  
                 command = this.SafeSqlLiteral(command);  
                 DBCommand sqlComm = new DBCommand();  
                 sqlComm.CommandText = command;  
                 sqlComm.Connection = connection;  
                 foreach (DBParameter p in Params) { sqlComm.Parameters.Add(p); }  
                 return sqlComm;  
             }  
             catch (SqlException ex)  
             {  
                 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())))  
                 {  
                     Logging.DatabaseLog.Error(string.Format("Failed to create command instance using command: {0}", command));  
                 }  
                 ErrorInfo = ex; throw ErrorInfo;  
             }  
             catch (Exception ex)  
             {  
                 using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", ex.GetType().Name, ex.Message, System.Environment.NewLine, ex.ToString())))  
                 {  
                     Logging.DatabaseLog.Error(string.Format("Failed to create command instance using command: {0}", command));  
                 }  
                 ErrorInfo = ex; throw ErrorInfo;  
             }  
112          }          }
113          #endregion          #endregion
114          #region  public virtual void CreateConnection(out Exception ErrorInfo)          #region  public virtual DBConnection CreateConnection(out Exception ErrorInfo)
115          public virtual void 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(DBServerAddress, DBServerInstance, DBDatabase);
124                      Logging.DatabaseLog.Debug("Creating Connection");                      using (log4net.NDC.Push(string.Format("connetionString={0}", connetionString)))
125                      connection = new DBConnection();                      {
126                      connection.ConnectionString = connetionString;                          Logging.DatabaseLog.Debug("Creating Connection");
127                      Logging.DatabaseLog.Debug("Created Connection");                          connection = new DBConnection();
128                            connection.ConnectionString = connetionString;
129                            Logging.DatabaseLog.Debug("Created Connection");
130                            this.ConnectionIsCreated = true;
131                        }
132                    }
133                    else
134                    {
135                        throw new Exception("Connection has already been created.");
136                  }                  }
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 121  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 136  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                  connetionString = GetConnectionString();                      this.CloseConnection(out ErrorInfo);
167                    if (!this.ConnectionIsCreated)
168                        this.CreateConnection(out ErrorInfo);
169                    connetionString = GetConnectionString(DBServerAddress, DBServerInstance, DBDatabase);
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()))
183                    {
184                        ErrorInfo = null;
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                  {                  {
188                      Logging.DatabaseLog.Error(string.Format("Failed to open connection to {0} Database", DBDatabase));                      Logging.DatabaseLog.Error(string.Format("Failed to open connection to {0} Database", DBDatabase));
# Line 157  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()))
196                    {
197                        ErrorInfo = null;
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                  {                  {
201                      Logging.DatabaseLog.Error(string.Format("Failed to open connection to {0} Database", DBDatabase));                      Logging.DatabaseLog.Error(string.Format("Failed to open connection to {0} Database", DBDatabase));
# Line 172  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              {              {
# Line 314  namespace AnywhereTS.DBSupport Line 358  namespace AnywhereTS.DBSupport
358                  {                  {
359                      if (!ClientRunScript(strFile, out ErrorInfo))                      if (!ClientRunScript(strFile, out ErrorInfo))
360                      {                      {
361                          if (ErrorInfo != null)                          if(ErrorInfo != null)
362                              throw ErrorInfo;                              throw ErrorInfo;
363                          return false;                          return false;
364                      }                      }
# Line 327  namespace AnywhereTS.DBSupport Line 371  namespace AnywhereTS.DBSupport
371              }              }
372              catch (SqlException ex)              catch (SqlException ex)
373              {              {
374                  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);
375                    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())))
376                  {                  {
377                      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));
378                  }                  }
379                  ErrorInfo = ex;                  ErrorInfo = ex; throw ErrorInfo;
380              }              }
381              catch (Exception ex)              catch (Exception ex)
382              {              {
383                  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();
384                    using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", e.GetType().Name, e.Message, System.Environment.NewLine, e.ToString())))
385                  {                  {
386                      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));
387                  }                  }
388                  ErrorInfo = ex;                  ErrorInfo = ex; throw ErrorInfo;
389              }              }
390              return false;              return false;
391          }          }
# Line 352  namespace AnywhereTS.DBSupport Line 398  namespace AnywhereTS.DBSupport
398              try              try
399              {              {
400                  Exception ErrorInfo;                  Exception ErrorInfo;
401                  CloseConnection(out ErrorInfo);                  if (this.ConnectionIsOpen)
402                        CloseConnection(out ErrorInfo);
403              }              }
404              catch              catch
405              {              {

Legend:
Removed from v.124  
changed lines
  Added in v.154

  ViewVC Help
Powered by ViewVC 1.1.22