На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Дорогие друзья! Поздравляем вас с днём Победы!
msm.ru
  
> Из Access в MySQL , перенос данных
    Здраствуйте, уважаемые. Мне необходимо перенести базу данных из Access в MySQL. Использую MySQL 5.0.В качестве драйвера скачал myoledb-3.9.6. Для начала хотелось хотя бы перенести данные, если есть идентичные таблицы на обоих сторонах. Вот мой код:
    ExpandedWrap disabled
      private void button1_Click(object sender, EventArgs e)
      {
          OleDbConnection AccessConnection = ConnectToAccessBase("Test_PGU_text.mdb");
       
          OleDbConnection MySQLConnection = ConnectToMySql("test_pgu_text", "root", "123");
          CloneTable(MySQLConnection, AccessConnection, "document_type");
          
       
          AccessConnection.Close();
          MySQLConnection.Close();
       
      }
       
      private OleDbConnection ConnectToMySql(String databaseName, String userId, String passwd)
      {
       
          String ConnectionString = String.Format("Provider=MySQLProv;Data Source= {0}; User Id = {1}; Password = {2};", databaseName, userId, passwd);
          OleDbConnection connection = new OleDbConnection(ConnectionString);
          connection.Open();
          return connection;
          
      }
       
      private void CloneTable(OleDbConnection MySQLConnection, OleDbConnection AccessConnection, String tableName)
      {
          
          DataSet dataSet = new DataSet();
          DataSet dataSet1 = new DataSet();
       
          AccessDataAdapter = new OleDbDataAdapter("SELECT * FROM " + tableName, AccessConnection);
          AccessDataAdapter.Fill(dataSet, tableName);
       
          MySQLDataAdapter = new OleDbDataAdapter("SELECT * FROM " + tableName, MySQLConnection);
          MySQLDataAdapter.Fill(dataSet1, tableName);
       
       
          dataSet1.Tables[tableName].Rows.Add(new Object[] { 4, "1212" });
          
       
          OleDbCommandBuilder cmdBuilder = new OleDbCommandBuilder(MySQLDataAdapter);
       
          cmdBuilder.SetAllValues = false;
       
          Int32 rowsAffected = MySQLDataAdapter.Update(dataSet, dataSet.Tables[tableName].TableName);
       
      }
       
      private OleDbConnection ConnectToAccessBase(String basePath)
      {
          OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + basePath);
          connection.Open();
          return connection;
      }


    Код выполняется, но изменений не происходит. Что не так? Может можно как-то по-другому? И как можно перенести и структуру бд?
    Сообщение отредактировано: walker -
      walker,
      http://www.google.com.ua/search?q=AccessToMySQL&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a
        Цитата PIL @
        walker,
        http://www.google.com.ua/search?q=AccessToMySQL&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a

        спасибо, но во-первых эта программа платная, а триальная версия позволяет переносить до 5 таблиц по 5 записей, а во-вторых хотелось бы самому разобраться в этом
          Цитата walker @
          Код выполняется, но изменений не происходит.

          поставь точку останова на MySQLDataAdapter.Update и посмотри что находится в MySQLDataAdapter.InsertCommand.CommandText
          это было первое.
          Второе - ты получил DataSet из Access - отсоединенные данные, дальше чтобы они вставились в MySQL они должны быть в DataRowState=Inserted, по моему так, они же у тебя будут unchanged - смотри в дебагере.
          Лучше почитай сначала алгоритм работы DataAdapter.Update, многое понятно станет
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0216 ]   [ 15 queries used ]   [ Generated: 12.05.24, 14:15 GMT ]