Пример #1
0
        private string InitConnectionString(ProviderType provider)
        {
            if (!MsAccessDataHelper.HasProvider(provider))
            {
                throw new InvalidOperationException(string.Format(Resources.ProviderNotInstaller, provider.ToString()));
            }

            _databasePath = GenerateDatabaseName();
            if (!string.IsNullOrEmpty(_sourceDatabasePath))
            {
                File.Copy(_sourceDatabasePath, _databasePath, true);
            }
            else if (_sourceDatabaseStream != null)
            {
                using (FileStream writer = new FileStream(_databasePath, FileMode.Create, FileAccess.Write))
                {
                    _sourceDatabaseStream.CopyTo(writer);
                }
            }
            else
            {
                MsAccessDataHelper.CreateEmptyDatabase(_databasePath, provider);
            }
            return(MsAccessDataHelper.CreateConnectionString(_databasePath, provider));
        }
Пример #2
0
        /// <inheritdoc/>
        protected override string GetTempTableName()
        {
            ProviderType provider = MsAccessDataHelper.GetProviderType(_connection);

            _tempDatabasePath = Path.GetTempFileName();
            MsAccessDataHelper.CreateEmptyDatabase(_tempDatabasePath, provider);
            _tempDatabase = new OleDbConnection(MsAccessDataHelper.CreateConnectionString(_tempDatabasePath, provider));
            _tempDatabase.Open();

            return(DestinationTableName);
        }
        private void CreateEmptyDatabaseCore(ProviderType provider)
        {
            string emptyDbPath = Path.GetTempFileName();

            try
            {
                MsAccessDataHelper.CreateEmptyDatabase(emptyDbPath, provider);
                Action connectToEmptyDbAction = () =>
                {
                    using (var cn = new OleDbConnection(MsAccessDataHelper.CreateConnectionString(emptyDbPath, provider)))
                    {
                        cn.Open();
                    }
                };
                connectToEmptyDbAction.Should().NotThrow();
            }
            finally
            {
                File.Delete(emptyDbPath);
            }
        }