public static DbConnectionProperties CreateFromString(String contents)
        {   
            int currLine=0;
            String[] lines = contents.Split(new char[]{'\n'});
            DbConnectionProperties props = new DbConnectionProperties();
            foreach (String line in lines)
            {
                currLine++;
                if (line==null) continue;
                String trimline=line.Trim();
                if (trimline.Length == 0) continue;
                if (trimline.StartsWith("#")) continue;
                String[] keyval = trimline.Split(new char[] { '=' },2);
                if (keyval.Length==1) throw new 
                    ApplicationException("Connection properties format incorrect, line "+currLine+ " does not contain a key-value pair ");
                String key = keyval[0].Trim().ToLower();
                String val = keyval[1].Trim();
                if ("username".Equals(key))
                {
                    props.Username = val;
                }
                else if ("password".Equals(key))
                {
                    props.Password = val;
                }
                else if ("service".Equals(key))
                {
                    props.Service = val;
                }
                else if ("database".Equals(key))
                {
                    props.DbName = val;
                }
                else if ("connection-string".Equals(key))
                {
                    props.FullConnectionString = val;
                }
                else
                {
                    throw new ApplicationException("Unsupported key in properties file:" + key);
                }

            }
            if (props.FullConnectionString != null) return props;
            if (props.Service != null && props.Username != null && props.Password != null) return props;
            throw new ApplicationException("You have to define either the full connection string; or service, username and password in the properties file");
        }
        public virtual void ConnectUsingFile(String connectionPropertiesFile)
        {
            DbConnectionProperties dbp = DbConnectionProperties.CreateFromFile(connectionPropertiesFile);

            if (dbp.FullConnectionString != null)
            {
                Connect(dbp.FullConnectionString);
            }
            else if (dbp.DbName != null)
            {
                Connect(dbp.Service, dbp.Username, dbp.Password, dbp.DbName);
            }
            else
            {
                Connect(dbp.Service, dbp.Username, dbp.Password);
            }
        }
        public static DbConnectionProperties CreateFromString(String contents)
        {
            int currLine = 0;

            String[] lines = contents.Split(new char[] { '\n' });
            DbConnectionProperties props = new DbConnectionProperties();

            foreach (String line in lines)
            {
                currLine++;
                if (line == null)
                {
                    continue;
                }
                String trimline = line.Trim();
                if (trimline.Length == 0)
                {
                    continue;
                }
                if (trimline.StartsWith("#"))
                {
                    continue;
                }
                String[] keyval = trimline.Split(new char[] { '=' }, 2);
                if (keyval.Length == 1)
                {
                    throw new
                          ApplicationException("Connection properties format incorrect, line " + currLine + " does not contain a key-value pair ");
                }
                String key = keyval[0].Trim().ToLower();
                String val = keyval[1].Trim();
                if ("username".Equals(key))
                {
                    props.Username = val;
                }
                else if ("password".Equals(key))
                {
                    props.Password = val;
                }
                else if ("service".Equals(key))
                {
                    props.Service = val;
                }
                else if ("database".Equals(key))
                {
                    props.DbName = val;
                }
                else if ("connection-string".Equals(key))
                {
                    props.FullConnectionString = val;
                }
                else
                {
                    throw new ApplicationException("Unsupported key in properties file:" + key);
                }
            }
            if (props.FullConnectionString != null)
            {
                return(props);
            }
            if (props.Service != null && props.Username != null && props.Password != null)
            {
                return(props);
            }
            throw new ApplicationException("You have to define either the full connection string; or service, username and password in the properties file");
        }