Exemplo n.º 1
0
        public void PackTest()
        {
            var dbc     = CreateTempDbc();
            var builder = new VfpConnectionStringBuilder(dbc);

            builder.Deleted = false;

            using (var connection = new VfpConnection(builder.ConnectionString)) {
                connection.Open();

                using (var command = connection.CreateCommand()) {
                    command.CommandText = "select count(*) from temp";

                    Assert.AreEqual(13, Convert.ToInt32(command.ExecuteScalar()));

                    command.CommandText = "delete from temp where upper(allt(TableName)) == 'CUSTOMERS'";
                    command.ExecuteNonQuery();

                    command.CommandText = "select count(*) from temp";

                    Assert.AreEqual(13, Convert.ToInt32(command.ExecuteScalar()));

                    connection.Pack("temp");

                    command.CommandText = "select count(*) from temp";

                    Assert.AreEqual(12, Convert.ToInt32(command.ExecuteScalar()));
                }

                connection.Close();
            }
        }
        public void Process(string sourceConnectionString, string sourceTableName, string destinationConnectionString, string destinationTableName)
        {
            const String recnoParm = "@recno";

            destinationTableName = Helper.GetDestinationTableName(destinationTableName);
            String    vfpConnStr = new VfpConnectionStringBuilder(sourceConnectionString).ConnectionString;
            DataTable dataTable  = Helper.GetOleDbDataTable(vfpConnStr, String.Format("SELECT RECNO() AS RecNo FROM {0} WHERE DELETED()", sourceTableName));

            if (dataTable.Rows.Count != 0)
            {
                using (SqlConnection destinationConnection = new SqlConnection(destinationConnectionString))
                {
                    destinationConnection.Open();
                    foreach (DataRow row in dataTable.Rows)
                    {
                        String cmdStr = String.Format("UPDATE {0} SET {1} = 1 WHERE {2} = {3}", destinationTableName, Constants.DILayer.DeletedColumnName, Constants.DILayer.RecnoColumnName, recnoParm);
                        using (SqlCommand cmd = new SqlCommand(cmdStr, destinationConnection))
                        {
                            cmd.Parameters.AddWithValue(recnoParm, row[0].ToString());
                            cmd.ExecuteNonQuery();
                        }
                    }
                    destinationConnection.Close();
                }
            }
        }
        public ConversionActionProcessor()
        {
            String hostConnStr = Helper.GetConnectionString(Constants.ConnectionNames.Host);
            VfpConnectionStringBuilder vfpConnStrBldr = new VfpConnectionStringBuilder(hostConnStr);

            HostPath = vfpConnStrBldr.DataSource;
        }
Exemplo n.º 4
0
        public void ConnectionStringTest()
        {
            var vfpConnectionStringBuilder = new VfpConnectionStringBuilder();

            Assert.AreEqual(string.Empty, vfpConnectionStringBuilder.ConnectionString, false);

            vfpConnectionStringBuilder.ConnectionString = "Data Source=Northwind.dbc";

            Assert.AreEqual("Data Source=Northwind.dbc", vfpConnectionStringBuilder.ConnectionString, true);
            Assert.AreEqual("Northwind.dbc", vfpConnectionStringBuilder.DataSource, false);
            Assert.AreEqual("Northwind.dbc", vfpConnectionStringBuilder.Database, false);

            vfpConnectionStringBuilder.ConnectionString = String.Empty;

            Assert.AreEqual(string.Empty, vfpConnectionStringBuilder.ConnectionString, true);
            Assert.AreEqual(string.Empty, vfpConnectionStringBuilder.DataSource, false);
            Assert.AreEqual(string.Empty, vfpConnectionStringBuilder.Database, false);

            vfpConnectionStringBuilder.ConnectionString = "Provider=FoxPro";

            Assert.AreEqual("Provider=FoxPro", vfpConnectionStringBuilder.ConnectionString, true);
            Assert.AreEqual(string.Empty, vfpConnectionStringBuilder.DataSource, false);
            Assert.AreEqual(string.Empty, vfpConnectionStringBuilder.Database, false);

            vfpConnectionStringBuilder.DataSource = "Test.dbc";

            Assert.AreEqual(vfpConnectionStringBuilder.Database, vfpConnectionStringBuilder.DataSource);
            vfpConnectionStringBuilder.DataSource = "Test2.dbc";
            Assert.AreEqual(vfpConnectionStringBuilder.DataSource, vfpConnectionStringBuilder.Database);
        }
        public void Null_ShouldSetNull(bool @null)
        {
            var builder = new VfpConnectionStringBuilder {
                Null = @null
            };

            Assert.Equal(@null, builder.Null);
        }
        public void CollatingSequence_ShouldSetCollatingSequence(Collation collatingSequence)
        {
            var builder = new VfpConnectionStringBuilder {
                CollatingSequence = collatingSequence
            };

            Assert.Equal(collatingSequence, builder.CollatingSequence);
        }
        public void Ansi_ShouldSetAnsi(bool ansi)
        {
            var builder = new VfpConnectionStringBuilder {
                Ansi = ansi
            };

            Assert.Equal(ansi, builder.Ansi);
        }
        public void Deleted_ShouldSetDeleted(bool deleted)
        {
            var builder = new VfpConnectionStringBuilder {
                Deleted = deleted
            };

            Assert.Equal(deleted, builder.Deleted);
        }
Exemplo n.º 9
0
        public void DbcOnlyTest()
        {
            var vfpConnectionStringBuilder = new VfpConnectionStringBuilder("Northwind.dbc");

            Assert.AreEqual("Data Source=Northwind.dbc", vfpConnectionStringBuilder.ConnectionString, true);
            Assert.AreEqual("Northwind.dbc", vfpConnectionStringBuilder.DataSource, false);
            Assert.AreEqual("Northwind.dbc", vfpConnectionStringBuilder.Database, false);
        }
Exemplo n.º 10
0
        public void FreeTableTest()
        {
            var vfpConnectionStringBuilder = new VfpConnectionStringBuilder(@"c:\");

            Assert.AreEqual(@"Data Source=c:\", vfpConnectionStringBuilder.ConnectionString, true);
            Assert.AreEqual(@"c:\", vfpConnectionStringBuilder.DataSource, false);
            Assert.AreEqual(string.Empty, vfpConnectionStringBuilder.Database, false);
        }
Exemplo n.º 11
0
        public void ZeroArgumentContructorTest()
        {
            var vfpConnectionStringBuilder = new VfpConnectionStringBuilder();

            Assert.AreEqual(string.Empty, vfpConnectionStringBuilder.ConnectionString, true);
            Assert.AreEqual(string.Empty, vfpConnectionStringBuilder.DataSource, false);
            Assert.AreEqual(string.Empty, vfpConnectionStringBuilder.Database, false);
            Assert.AreEqual(0, vfpConnectionStringBuilder.Count);
        }
Exemplo n.º 12
0
        public void VfpOleDbConnectionStringTest()
        {
            var connectionString           = "provider=vfpoledb;data source=northwind.dbc;deleted=false;ansi=true;";
            var vfpConnectionStringBuilder = new VfpConnectionStringBuilder(connectionString);

            Assert.AreEqual("provider=vfpoledb;data source=northwind.dbc;deleted=false;ansi=true", vfpConnectionStringBuilder.ConnectionString, true);
            Assert.AreEqual("northwind.dbc", vfpConnectionStringBuilder.DataSource, false);
            Assert.AreEqual("northwind.dbc", vfpConnectionStringBuilder.Database, false);
            Assert.AreEqual(4, vfpConnectionStringBuilder.Count);
        }
        public void Constructor_Default_ShouldHaveEmptyProperties()
        {
            var builder = new VfpConnectionStringBuilder();

            Assert.Equal(Empty, builder.ConnectionString, true);
            Assert.Equal(Empty, builder.DataSource);
            Assert.Equal(Empty, builder.Database);
            Assert.False(builder.IsDbc);
            Assert.Equal(Empty, builder.Provider);
        }
        public void Constructor_WithConnectionString_ShouldSetProperties(ConnectionStringsTestCase testCase)
        {
            var builder = new VfpConnectionStringBuilder(testCase.ConnectionString);

            Assert.Equal(testCase.ExpectedConnectionString, builder.ConnectionString, true);
            Assert.Equal(testCase.DataSource, builder.DataSource);
            Assert.Equal(testCase.Database, builder.Database);
            Assert.Equal(testCase.IsDbc, builder.IsDbc);
            Assert.Equal(testCase.Provider, builder.Provider);
        }
Exemplo n.º 15
0
        public static void Using(string connectionString, Action <SchemaManager> action)
        {
            var builder = new VfpConnectionStringBuilder(connectionString);

            builder.Ansi = true;

            var connection = new VfpConnection(builder.ConnectionString);

            using (var manager = new SchemaManager(connection, new DataTableDbcCreator())) {
                action(manager);
            };
        }
Exemplo n.º 16
0
        protected override IVsDataReader SelectObjects(string typeName, object[] restrictions, string[] properties, object[] parameters)
        {
            VfpClientTracing.Tracer.TraceVerbose(String.Format("DataSourceSelector.SelectObjects typeName={0}", typeName));

            var dataTable = new DataTable();

            dataTable.Columns.Add("Name");

            var connectionStringBuilder = new VfpConnectionStringBuilder(Site.DisplayConnectionString);

            dataTable.Rows.Add(connectionStringBuilder.DataSource);

            return(new AdoDotNetReader(dataTable.CreateDataReader()));
        }
Exemplo n.º 17
0
        public void VfpConnectionStringBuilderPropertiesTest()
        {
            var vfpConnectionStringBuilder = new VfpConnectionStringBuilder("northwind.dbc")
            {
                Ansi = true, Deleted = false, CollatingSequence = Collation.GENERAL
            };

            Assert.AreEqual("data source=northwind.dbc;Ansi=True;Deleted=False;Collating Sequence=GENERAL", vfpConnectionStringBuilder.ConnectionString, true);
            Assert.AreEqual("northwind.dbc", vfpConnectionStringBuilder.DataSource, false);
            Assert.AreEqual("northwind.dbc", vfpConnectionStringBuilder.Database, false);
            Assert.AreEqual(true, vfpConnectionStringBuilder.Ansi);
            Assert.AreEqual(false, vfpConnectionStringBuilder.Deleted);
            Assert.AreEqual(Collation.GENERAL, vfpConnectionStringBuilder.CollatingSequence);
            Assert.AreEqual(4, vfpConnectionStringBuilder.Count);
        }
        private void InsertEmptyValues(bool allowNulls)
        {
            using (var context = GetAllTypesDataContext()) {
                var item    = new AllTypesTable();
                var builder = new VfpConnectionStringBuilder(context.Database.Connection.ConnectionString);

                builder.Null = allowNulls;

                context.Database.Connection.ConnectionString = builder.ConnectionString;

                item.Guid = Guid.NewGuid();

                context.AllTypes.Add(item);
                context.SaveChanges();
            }
        }
        public void Process(string sourceConnectionString, string sourceTableName, string destinationConnectionString, string destinationTableName)
        {
            destinationTableName = Helper.GetDestinationTableName(destinationTableName);
            VfpConnectionStringBuilder vfpConnStrBldr = new VfpConnectionStringBuilder(sourceConnectionString);
            String vfpFileName = Path.Combine(vfpConnStrBldr.DataSource, Path.ChangeExtension(sourceTableName, "DBF"));

            SqlConnectionStringBuilder sqlConStrBldr = new SqlConnectionStringBuilder(destinationConnectionString);

            Ivfptosqlbulkcopy com    = new vfptosqlbulkcopyClass();
            String            result = com.UploadMemos(vfpFileName, destinationTableName, sqlConStrBldr.DataSource, sqlConStrBldr.InitialCatalog);

            if (!String.IsNullOrEmpty(result))
            {
                throw new Exception(result);
            }
        }
Exemplo n.º 20
0
        public void OneStringArgumentConstructorTest()
        {
            var vfpConnectionStringBuilder = new VfpConnectionStringBuilder(null);

            Assert.AreEqual(string.Empty, vfpConnectionStringBuilder.ConnectionString, true);
            Assert.AreEqual(string.Empty, vfpConnectionStringBuilder.DataSource, false);
            Assert.AreEqual(string.Empty, vfpConnectionStringBuilder.Database, false);

            vfpConnectionStringBuilder = new VfpConnectionStringBuilder(String.Empty);

            Assert.AreEqual(string.Empty, vfpConnectionStringBuilder.ConnectionString, true);
            Assert.AreEqual(string.Empty, vfpConnectionStringBuilder.DataSource, false);
            Assert.AreEqual(string.Empty, vfpConnectionStringBuilder.Database, false);

            vfpConnectionStringBuilder = new VfpConnectionStringBuilder("Data Source=Northwind.dbc");

            Assert.AreEqual("Data Source=Northwind.dbc", vfpConnectionStringBuilder.ConnectionString, true);
            Assert.AreEqual("Northwind.dbc", vfpConnectionStringBuilder.DataSource, false);
            Assert.AreEqual("Northwind.dbc", vfpConnectionStringBuilder.Database, false);
        }
        private AllTypesTable Insert_WithEmptyValues(bool allowNulls)
        {
            var item = new AllTypesTable();

            Execute(context => {
                var connection = context.Database.GetDbConnection();
                var builder    = new VfpConnectionStringBuilder(connection.ConnectionString)
                {
                    Null = allowNulls
                };

                connection.ConnectionString = builder.ConnectionString;

                item.Guid = Guid.NewGuid();

                context.AllTypes.Add(item);
                context.SaveChanges();
            });

            return(item);
        }
        public void TestEssexInWMailUpload()
        {
            VfpConnectionStringBuilder vfpConnStrBldr = new VfpConnectionStringBuilder(VfpConnectionString);

            vfpConnStrBldr.DataSource = @"D:\Essex\Hostdema\";
            String vfpConnStr = vfpConnStrBldr.ConnectionString;

            String       sqlConnStr = "Data Source = (local); Initial Catalog = Essex_22_000211; Integrated Security = True";
            const String tableName  = "IN_WMAIL";

            Helper.ExecuteSqlNonQuery(sqlConnStr, "DELETE FROM " + tableName);

            string expectedRecordCountCmdStr = "SELECT COUNT(*) FROM " + tableName;
            int    expectedRecordCount       = Convert.ToInt32(Helper.GetOleDbScaler(vfpConnStr, expectedRecordCountCmdStr));

            TableUploader tu = new TableUploader();

            tu.Process(vfpConnStr, tableName, sqlConnStr, tableName);
            int actualRecordCount = Convert.ToInt32(Helper.GetSqlScaler(sqlConnStr, expectedRecordCountCmdStr));

            Assert.AreEqual(expectedRecordCount, actualRecordCount);
        }
Exemplo n.º 23
0
        public void TestConnStringHasDeleted()
        {
            IList <String> clauses = new List <String>()
            {
                String.Format("Provider={0}", Constants.ConnectionStringTerms.VfpOleDbProvider),
                @"Data Source=D:\VfpToSql\vhost",
            };
            String        delim = ";";
            StringBuilder sb    = new StringBuilder();

            foreach (String clause in clauses)
            {
                sb.Append(delim + clause);
                delim = ";";
            }
            String connStr = sb.ToString();


            OleDbConnectionStringBuilder oleDbBldr = new OleDbConnectionStringBuilder(connStr);
            String ds = oleDbBldr.DataSource;

            Assert.IsFalse(String.IsNullOrEmpty(ds));

            VfpConnectionStringBuilder vfpBldr = new VfpConnectionStringBuilder(connStr);
            String actual = vfpBldr.ConnectionString.Replace(" ", String.Empty);

            clauses.Add("DELETED = False");
            foreach (String clause in clauses)
            {
                Assert.IsTrue(actual.ToUpper().Contains(clause.ToUpper().Replace(" ", String.Empty)));
            }

            Assert.IsTrue(actual.ToUpper().Replace(" ", String.Empty).Contains(CollatingSequenceClause));

            TestContext.WriteLine(actual);
        }
        public void Deleted_ShouldDefaultToTrue()
        {
            var builder = new VfpConnectionStringBuilder();

            Assert.True(builder.Deleted);
        }
        public void Ansi_ShouldDefaultToTrue()
        {
            var builder = new VfpConnectionStringBuilder();

            Assert.True(builder.Ansi);
        }
        public void CollatingSequence_ShouldDefaultToInput()
        {
            var builder = new VfpConnectionStringBuilder();

            Assert.Equal(Collation.MACHINE, builder.CollatingSequence);
        }
Exemplo n.º 27
0
        public void Process(String sourceConnectionString, String sourceTableName, String destinationConnectionString, String destinationTableName)
        {
            destinationTableName = Helper.GetDestinationTableName(destinationTableName);
            int recordCount = Convert.ToInt32(Helper.GetOleDbScaler(sourceConnectionString, "SELECT COUNT(*) FROM " + sourceTableName));

            BatchSize = BatchSizeProvider.GetBatchSize(sourceTableName);

            DataTable dataTable = null;

            using (SqlConnection destinationConnection = new SqlConnection(destinationConnectionString))
            {
                destinationConnection.Open();

                #region Upload

                VfpConnectionStringBuilder vfpConnStrBldr = new VfpConnectionStringBuilder(sourceConnectionString);
                sourceConnectionString = vfpConnStrBldr.ConnectionString;
                String vfpFolderName = vfpConnStrBldr.DataSource;

                using (OleDbConnection sourceConnection = new OleDbConnection(sourceConnectionString))
                {
                    sourceConnection.Open();

                    int minRecno, maxRecno, recsUploaded;
                    recsUploaded = 0;

                    while (true)
                    {
                        minRecno = recsUploaded;
                        maxRecno = minRecno + BatchSize;

                        // Pull rows from VFP
                        String cmdStr = String.Format("SELECT * FROM {0} WHERE RECNO() > {1} AND RECNO() <= {2}", sourceTableName, Convert.ToString(minRecno), Convert.ToString(maxRecno));
                        dataTable    = Helper.GetOleDbDataTable(sourceConnectionString, cmdStr);
                        recsUploaded = recsUploaded + dataTable.Rows.Count;

                        // Push rows to SQL
                        // D # 19055 As instantiated, our SqlBulkCopy won't fire triggers.  And doing what we need to do
                        // isn't as simple as firing triggers - because as part of the overall upload we TRUNCATE TABLE <> -
                        // which does not fire the DELETE trigger...
                        using (SqlBulkCopy copier = new SqlBulkCopy(destinationConnection))
                        {
                            DataTableReader dtReader = dataTable.CreateDataReader();
                            copier.BulkCopyTimeout      = 0;
                            copier.DestinationTableName = destinationTableName;
                            copier.WriteToServer(dataTable);
                            dtReader.Close();
                        }

                        if (recsUploaded >= recordCount)
                        {
                            break;
                        }
                    }

                    sourceConnection.Close();
                }

                #endregion

                destinationConnection.Close();
            }
        }
Exemplo n.º 28
0
        public override string GetConnectionDescription(IConnectionInfo connectionInfo)
        {
            var builder = new VfpConnectionStringBuilder(connectionInfo.DatabaseInfo.CustomCxString);

            return(builder.DataSource);
        }
Exemplo n.º 29
0
        public void Process(string sourceConnectionString, string sourceTableName, string destinationConnectionString, string destinationTableName)
        {
            OleDbSchemaProvider schemaProvider = new OleDbSchemaProvider();
            Dictionary <String, OleDbColumnDefinition> schema = schemaProvider.GetSchema(sourceConnectionString, sourceTableName);

            IEnumerable <OleDbColumnDefinition> numericColDefs = schema.Values.Where(colDef => colDef.Type == System.Data.OleDb.OleDbType.Numeric).ToList();

            if (numericColDefs.Count() == 0)
            {
                return;
            }

            VfpConnectionStringBuilder vfpConnStrBldr = new VfpConnectionStringBuilder(sourceConnectionString);

            sourceConnectionString = vfpConnStrBldr.ConnectionString;

            int batchSize   = BatchSizeProvider.GetBatchSize(sourceTableName);
            int recordCount = Convert.ToInt32(Helper.GetOleDbScaler(sourceConnectionString, "SELECT COUNT(*) FROM " + sourceTableName));

            using (OleDbConnection sourceConnection = new OleDbConnection(sourceConnectionString))
            {
                sourceConnection.Open();

                int minRecno, maxRecno, recsProcessed;
                recsProcessed = 0;

                String comma      = String.Empty;
                String columnList = String.Empty;

                StringBuilder sb = new StringBuilder().Append("SELECT ");
                foreach (OleDbColumnDefinition colDef in numericColDefs)
                {
                    sb.Append(comma + colDef.Name);
                    comma = ",";
                }

                sb.Append(" FROM " + sourceTableName + " WHERE ");

                String selectAllColsCmdStr = sb.ToString();

                while (true)
                {
                    minRecno = recsProcessed;
                    maxRecno = minRecno + batchSize;

                    // SELECT <all numeric cols> FROM <> RECNO() > 0 and RECNO() <= 25000

                    if (!TryRead(sourceConnectionString, String.Format(selectAllColsCmdStr + GetRecNoWhereClause(minRecno, maxRecno))))
                    {
                        // if we cant read all the numerics we're good-to-go.  Otherwise we'll go column-by-column
                        foreach (OleDbColumnDefinition colDef in numericColDefs)
                        {
                            String recnoWhereClause = GetRecNoWhereClause(minRecno, maxRecno);
                            String cmdStr           = String.Format("SELECT {0} FROM {1} WHERE {2}", colDef.Name, sourceTableName, recnoWhereClause);
                            if (!TryRead(sourceConnectionString, cmdStr))
                            {
                                String maxVal;
                                if (colDef.NumericScale > 0)
                                {
                                    // 4,2 - -9.99 - 99.99
                                    maxVal = new String('9', (int)(colDef.NumericPrecision - colDef.NumericScale)) + "." + new String('9', (int)colDef.NumericScale);
                                }
                                else
                                {
                                    maxVal = new String('9', (int)(colDef.NumericPrecision));
                                }
                                cmdStr = String.Format("UPDATE {0} SET {1} = 0 WHERE NOT BETWEEN({1},-{2},{2}) AND {3}", sourceTableName, colDef.Name, maxVal, recnoWhereClause);
                                CommandStrings.Add(cmdStr);
                                Helper.ExecuteOleDbNonQuery(sourceConnectionString, cmdStr);
                            }
                        }
                    }

                    recsProcessed = recsProcessed + batchSize;
                    if (recsProcessed >= recordCount)
                    {
                        break;
                    }
                }

                sourceConnection.Close();
            }

            return;
        }