using System; using System.Collections.Generic; using System.Text; using System.Data.SqlClient; using System.Linq; using System.Text.RegularExpressions; namespace AnywhereTS.DBSupport { public class SqlMdfConnector : DBConnector { public SqlMdfConnector(string DBServerAddress, string DBServerInstance, string SqlMdf) : base(DBServerAddress, DBServerInstance, SqlMdf) { } public override void CreateConnection(out Exception ErrorInfo) { ErrorInfo = null; try { string connetionString = GetConnectionString(DBServerAddress, DBServerInstance, DBDatabase); using (log4net.NDC.Push(string.Format("connetionString={0}", connetionString))) { Logging.DatabaseLog.Debug("Creating Connection"); connection = new SqlConnection(); connection.ConnectionString = connetionString; Logging.DatabaseLog.Debug("Created Connection"); } } //catch (SqlException ex) { Console.WriteLine(ex.ToString()); ErrorInfo = ex; throw ErrorInfo;} catch (Exception ex) { Console.WriteLine(ex.ToString()); ErrorInfo = ex; throw ErrorInfo; } } new public static string GetConnectionString(string server, string instance, string database) { return string.Format(@"Data Source={0}\{1};AttachDbFilename=|DataDirectory|\{2};Integrated Security=SSPI", server, instance, database); } protected override bool ClientRunScript(string strFile, out Exception ErrorInfo) { ErrorInfo = null; try { var commands = Regex.Split(strFile, string.Format(@"^GO{0}", System.Environment.NewLine), RegexOptions.IgnoreCase | RegexOptions.Multiline); foreach (var command in commands) { Logging.DatabaseLog.DebugFormat("Current Command={0}", command); SqlConnection sqlCon; this.GetConnectionClone(out sqlCon, out ErrorInfo); SqlCommand sqlcmd = new SqlCommand(command, this.connection); sqlcmd.CommandText = command; sqlcmd.Connection = sqlCon; sqlcmd.CommandType = System.Data.CommandType.Text; sqlcmd.ExecuteNonQuery(); } return true; } catch (Exception ex) { ErrorInfo = ex; throw ErrorInfo; } } } }