/// <summary>
        /// Almacena la configuracion con los datos que se pasan como parametros.-
        /// </summary>
        /// <param name="pCnnString">Coneccion</param>
        ///<param name="pAppend">Agrega nuevo elemento</param>
        public bool SaveSetting(CnnString pCnnString)
        {
            bool isNew = false;

            if (_DataBaseConnections.Connections.Any <CnnString>(c => c.Name.Equals(pCnnString.Name, StringComparison.OrdinalIgnoreCase)))
            {
                //modifico la configuracion .-
                CnnString cnn = _DataBaseConnections.Connections.First <CnnString>(c => c.Name.Equals(pCnnString.Name, StringComparison.OrdinalIgnoreCase));

                if (cnn.Name != null)
                {
                    cnn.Password               = pCnnString.Password;
                    cnn.DataSource             = pCnnString.DataSource;
                    cnn.User                   = pCnnString.User;
                    cnn.WindowsAutentification = pCnnString.WindowsAutentification;
                    cnn.InitialCatalog         = pCnnString.InitialCatalog;
                }
                isNew = false;
            }
            else
            {
                //Almaceno la configuracion .-
                _DataBaseConnections.Connections.Add(pCnnString);
                isNew = true;
            }



            _CurrentCnnString = pCnnString;
            _DataBaseConnections.Save();
            return(isNew);
        }
        internal void Load()
        {
            try
            {
                IsolatedStorageFile userStore = IsolatedStorageFile.GetUserStoreForAssembly();

                //Si no hay datos para este usuario
                if (userStore.GetFileNames(DATABASE_CONFIG_FILE).Length == 0)
                {
                    //Limpio el diccionario por si contien algo
                    //_Connections.Clear();
                    return;
                }
                //Abro el stream con la informacion serializada del diccionario desde el IsolatedStorage
                IsolatedStorageFileStream userStream = new IsolatedStorageFileStream(DATABASE_CONFIG_FILE, FileMode.Open, userStore);
                _Connections = DeSerializeDictionary(userStream);
            }
            catch (FileNotFoundException)//si ocurre algun error construyo una coneccion por defecto
            {
                CnnString cnn = new CnnString();
                cnn.DataSource             = "DataSourceEmty";
                cnn.Name                   = "ConnectionName";
                cnn.Password               = String.Empty;
                cnn.User                   = "******";
                cnn.WindowsAutentification = true;
                cnn.InitialCatalog         = String.Empty;

                _Connections.Add(cnn);
                Save();
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public DataTable GetDataBases()
        {
            CnnString cnn = GetCnnStringToMaster(_CurrentCnnString);

            using (SqlConnection wCnn = new SqlConnection(cnn.ToString()))
                using (SqlCommand wCmd = new SqlCommand())
                {
                    try
                    {
                        wCnn.Open();
                        wCmd.Connection  = wCnn;
                        wCmd.CommandType = CommandType.StoredProcedure;
                        wCmd.CommandText = "sp_databases";

                        DataSet        wDs = new DataSet();
                        SqlDataAdapter wDa = new SqlDataAdapter(wCmd);

                        wDa.Fill(wDs);
                        wCnn.Close();
                        return(wDs.Tables[0]);
                    }
                    catch (SqlException ex)
                    {
                        throw ex;
                    }
                }
        }
        /// <summary>
        /// Permite leer nuevamente el archivo de configuracion donde esta el acceso a la BD para recargar la coneccion.-
        /// </summary>
        public void InitializeConfig()
        {
            try
            {
                _DataBaseConnections.Load();
                if (_DataBaseConnections.Connections.Count > 0)
                {
                    _CurrentCnnString = _DataBaseConnections.Connections[0];
                }
            }

            catch (FileNotFoundException)
            {
                string msg = "No se encuentra el archivo de configuracion de base de datos:";
                throw new System.Exception(msg);
            }
            catch (System.Security.Cryptography.CryptographicException e)
            {
                _CurrentCnnString.Password = String.Empty;
                throw new DataBaseExeption(e, _CurrentCnnString);
            }
            catch (Exception)
            {
                string msg = "Verifique que el archivo de configuracion tiene seteado el archivo de conecciones a la base de datos.-";
                throw new System.Exception(msg);
            }
        }
        public CnnString CreateConnection()
        {
            _CurrentCnnString = new CnnString();

            _DataBaseConnections.Connections.Add(_CurrentCnnString);

            return(_CurrentCnnString);
        }
Exemple #6
0
        /// <summary>
        ///
        /// </summary>
        public Metadata(CnnString cnnString)
            : base(String.Empty)
        {
            _Tables          = new Tables();
            _StoreProcedures = new StoreProcedures();
            _DataBaseServer  = new DataBaseServer(true);

            _DataBaseServer.CurrentCnnString = cnnString;
        }
        private static CnnString GetCnnStringToMaster(CnnString pCnnString)
        {
            CnnString _CnnStringToTest = new CnnString();

            _CnnStringToTest.DataSource             = pCnnString.DataSource;
            _CnnStringToTest.InitialCatalog         = "master";
            _CnnStringToTest.User                   = pCnnString.User;
            _CnnStringToTest.Password               = pCnnString.Password;
            _CnnStringToTest.WindowsAutentification = pCnnString.WindowsAutentification;
            return(_CnnStringToTest);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="pServerName"></param>
        /// <param name="pUserName"></param>
        /// <param name="pPassword"></param>
        /// <param name="pWindowsAutChecked"></param>
        /// <returns></returns>
        private static CnnString GetCnnStringToMaster(string pServerName, string pUserName, string pPassword, bool pWindowsAutChecked)
        {
            CnnString _CnnStringToMapper = new CnnString();

            _CnnStringToMapper.DataSource             = pServerName;
            _CnnStringToMapper.InitialCatalog         = "master";
            _CnnStringToMapper.User                   = pUserName;
            _CnnStringToMapper.Password               = pPassword;
            _CnnStringToMapper.WindowsAutentification = pWindowsAutChecked;
            return(_CnnStringToMapper);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="pCnnString"></param>
        /// <returns></returns>
        public static bool TestConnection(CnnString pCnnString)
        {
            using (SqlConnection wCnn = new SqlConnection(pCnnString.ToString()))
            {
                try
                {
                    wCnn.Open();

                    wCnn.Close();
                    return(true);
                }
                catch (Exception ex)
                {
                    throw new DataBaseExeption(ex, pCnnString);
                }
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="pException"></param>
        /// <param name="pCnnString"></param>
        public DataBaseExeption(Exception pException, CnnString pCnnString)
        {
            _CnnString = pCnnString;


            if (pException.GetType() == typeof(System.Security.Cryptography.CryptographicException))
            {
                _Msg = "La password encriptada en el archivo de configuracion fue violada. "
                       + Environment.NewLine + "Reescriba su clave y guarde su configuracion";
            }
            if (pException.GetType() == typeof(SqlException))
            {
                System.Data.SqlClient.SqlException ex = (System.Data.SqlClient.SqlException)pException;
                //ex.Number == 18456 Login fail
                _Msg = pException.Message + Environment.NewLine + "Vuelva a ingresar la informacion de conección";
            }
            if (pException.GetType() == typeof(System.IO.FileNotFoundException))
            {
                _Msg = pException.Message;
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="pServerName"></param>
        /// <param name="pUserName"></param>
        /// <param name="pPassword"></param>
        /// <param name="pWindowsAutChecked"></param>
        /// <returns></returns>
        public static bool TestConnection(string pServerName, string pUserName, string pPassword, bool pWindowsAutChecked)
        {
            CnnString cnn = GetCnnStringToMaster(pServerName, pUserName, pPassword, pWindowsAutChecked);

            return(TestConnection(cnn));
        }