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); }