예제 #1
0
        public string DbfConnection(string path)
        {
            List <string>   columnsName = new List <string>();
            List <string>   columnType  = new List <string>();
            List <string>   isLong      = new List <string>();
            List <string>   columnSize  = new List <string>();
            OleDbConnection conDBF;
            OleDbDataReader myReader;
            BuildSql        builder = new BuildSql();

            DataTable dataTable = new DataTable();

            conDBF = new OleDbConnection(@"Provider=VFPOLEDB.1;Data Source=" + path + ";deleted=false;");
            conDBF.Open();

            string       sqlEventos = "select *from " + Path.GetFileName(path);
            string       tableName  = Path.GetFileName(path).Replace(".dbf", "").Replace(".DBF", "");
            OleDbCommand query      = new OleDbCommand();

            query.Connection  = conDBF;
            query.CommandText = sqlEventos;
            //OleDbDataAdapter da = new OleDbDataAdapter(query);
            //da = new OleDbDataAdapter(query);
            //da.Fill(eventosTable);
            myReader = query.ExecuteReader(CommandBehavior.KeyInfo);
            //Retrieve column schema into a DataTable.
            dataTable = myReader.GetSchemaTable();

            //For each field in the table...
            foreach (DataRow myField in dataTable.Rows)
            {
                columnsName.Add(myField["ColumnName"].ToString());
                columnType.Add(myField["DataType"].ToString());
                isLong.Add(myField["IsLong"].ToString());
                columnSize.Add(myField["ColumnSize"].ToString());
            }
            foreach (DataColumn myProperty in dataTable.Columns)
            {
                //Display the field name and value.
                foreach (DataRow myField in dataTable.Rows)
                {
                    Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());
                }
            }


            string firstCreate = builder.CreateTableSql(tableName.ToLower(), isLong.ToArray(), columnSize.ToArray(), columnsName.ToArray(), columnType.ToArray());

            ///Console.WriteLine(firstCreate);
            //CreateTables(firstCreate);
            //Always close the DataReader and connection.
            myReader.Close();
            conDBF.Close();
            return(firstCreate);
        }