Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.22.51.241] |
|
Сообщ.
#1
,
|
|
|
Здраствуйте, уважаемые. Мне необходимо перенести базу данных из Access в MySQL. Использую MySQL 5.0.В качестве драйвера скачал myoledb-3.9.6. Для начала хотелось хотя бы перенести данные, если есть идентичные таблицы на обоих сторонах. Вот мой код:
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; } Код выполняется, но изменений не происходит. Что не так? Может можно как-то по-другому? И как можно перенести и структуру бд? |
Сообщ.
#2
,
|
|
|
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 |
Сообщ.
#3
,
|
|
|
Цитата 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 записей, а во-вторых хотелось бы самому разобраться в этом |
Сообщ.
#4
,
|
|
|
Цитата walker @ Код выполняется, но изменений не происходит. поставь точку останова на MySQLDataAdapter.Update и посмотри что находится в MySQLDataAdapter.InsertCommand.CommandText это было первое. Второе - ты получил DataSet из Access - отсоединенные данные, дальше чтобы они вставились в MySQL они должны быть в DataRowState=Inserted, по моему так, они же у тебя будут unchanged - смотри в дебагере. Лучше почитай сначала алгоритм работы DataAdapter.Update, многое понятно станет |