public static void AccessConnect() { List <List <string> > tableRows = new List <List <string> >(); // Microsoft Access provider factory DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb"); DbConnection connection = factory.CreateConnection(); DataTable userTables = null; DataTable table = null; List <string> oneRow = new List <string>(); using (connection) // ??? { connection.ConnectionString = connectionString; // Строка подключения string[] restrictions = new string[4]; // параметры ограничения restrictions[3] = "Table"; // Только таблицы пользователя connection.Open(); // открыть подключение // Get list of user tables userTables = connection.GetSchema("Tables", restrictions); // названия пользовательских таблиц table = connection.GetSchema("Columns"); // Получение название колонок Console.WriteLine("Press any key to continue."); Console.ReadKey(); } List <string> tableNames = new List <string>(); for (int i = 0; i < userTables.Rows.Count; i++) { if (userTables.Rows[i][2].ToString()[0] == 'T') { tableNames.Add(userTables.Rows[i][2].ToString()); // получение название таблиц } } My_Stuct returnAnswer = new My_Stuct(); for (int i = 0; i < userTables.Rows.Count; i++) { Console.WriteLine(userTables.Rows[i][2].ToString()); // вывод названий таблиц } returnAnswer = Find(table, tableNames); // получение строки запроса в access List <string> answer = returnAnswer.First; tableRows = returnAnswer.Second; for (int i = 0; i < tableNames.Count; i++) { Postgres.TableCreate(answer[i].Remove(answer[i].Length - 1), tableNames[i]); // создание } OleDbConnection myConnection; double buf = 0; List <List <string> > querysTable; List <string> column; for (int i = 0; i < tableNames.Count; i++) { querysTable = new List <List <string> >(); myConnection = new OleDbConnection(connectionString); myConnection.Open(); for (int j = 0; j < tableRows[i].Count; j++) { column = new List <string>(); string query = "SELECT " + tableRows[i][j] + " FROM " + tableNames[i]; OleDbCommand command = new OleDbCommand(query, myConnection); OleDbDataReader reader = command.ExecuteReader(); // создаем объект OleDbCommand для выполнения запроса к БД MS Access while (reader.Read()) { if (reader[0] is DateTime) { column.Add((((DateTime)reader[0]).ToString("yyyy.MM.dd hh:mm:ss"))); } else if (double.TryParse(reader[0].ToString(), out buf)) { column.Add((reader[0].ToString()).Replace(',', '.')); } else { column.Add(reader[0].ToString()); } } querysTable.Add(column); } Postgres.AddRecord(querysTable, tableRows[i], tableNames[i]); Console.WriteLine(tableNames[i]); } }
static void Main(string[] args) { Postgres.DBCreate(); Access.AccessConnect(); }