using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Sdaleo.Systems { public static class ConnStr { /// /// Quick Check to see if a connection string is valid * must have DataSource Key and /// a Value * in order to be considered a valid Connection String /// /// /// public static bool IsConnectionString(string ConnectionString) { if (!String.IsNullOrEmpty(ConnectionString) && ConnectionString.ToUpper().Contains("DATA SOURCE") && ConnectionString.Contains("=")) { String[] tokens = ConnectionString.Split(';'); foreach (string Pair in tokens) { string[] KeyValuePair = Pair.Split('='); try { string left = KeyValuePair[0]; string right = KeyValuePair[1]; if (String.Compare(KeyValuePair[0].ToUpper().Trim(), "DATA SOURCE", true) == 0) return !String.IsNullOrEmpty(right); } catch (Exception) { /* ignore and continue iteration */ } } return true; } return false; } /// /// Check to see if a Connection String Contains the specified Key /// /// /// /// public static bool ContainsKey(string Key, string ConnectionString) { if (!String.IsNullOrEmpty(Key) && !String.IsNullOrEmpty(ConnectionString)) { String[] tokens = ConnectionString.Split(';'); foreach (string Pair in tokens) { string[] KeyValuePair = Pair.Split('='); try { string left = KeyValuePair[0]; string right = KeyValuePair[1]; if (String.Compare(KeyValuePair[0].ToUpper().Trim(), Key.ToUpper().Trim(), true) == 0) return true; } catch (Exception) { /* ignore and continue iteration */ } } } return false; } /// /// Retrieve the value of a Key for the specified Connection String /// /// /// /// public static string RetrieveValue(string Key, string ConnectionString) { if (!String.IsNullOrEmpty(Key) && !String.IsNullOrEmpty(ConnectionString)) { String[] tokens = ConnectionString.Split(';'); foreach (string Pair in tokens) { string[] KeyValuePair = Pair.Split('='); try { string left = KeyValuePair[0]; string right = KeyValuePair[1]; string FoundValue = ""; if(String.Compare(KeyValuePair[0].ToUpper().Trim(), Key.ToUpper().Trim(), true) == 0) { if (!String.IsNullOrEmpty(right)) { FoundValue = right.Trim(); return FoundValue; } } } catch (Exception) { /* ignore and continue iteration */ } } } return String.Empty; } /// /// Tries to retrieve the DataSource Value from a Connection string. /// If it can it will return that. If it can't it will return the originial /// ConnectionString passed in Trimmed(). /// /// /// public static string GetDataSource(string ConnectionString) { if (IsConnectionString(ConnectionString)) { String[] tokens = ConnectionString.Split(';'); foreach (string Pair in tokens) { string[] KeyValuePair = Pair.Split('='); try { string left = KeyValuePair[0]; string right = KeyValuePair[1]; string FoundValue = ""; if (String.Compare(KeyValuePair[0].ToUpper().Trim(), "DATA SOURCE", true) == 0) { if (!String.IsNullOrEmpty(right)) { FoundValue = right.Trim(); return FoundValue; } } } catch (Exception) { /* ignore and continue iteration */ } } } // Migth still be a data source just not from a Connection string // so just return the value trimmed if(!String.IsNullOrEmpty(ConnectionString)) return ConnectionString.Trim(); else return String.Empty; } } }