Линдси
Интересующийся
Offline
|
|
« : 12-10-2010 11:48 » |
|
Теперь конкретнее.... Есть датагрид, есть access и мускул....и студия 10я.... Мне нужно цикличную построчную выборку из табл аксесс и построчную запись в мускул(в цикле)... с построчным же выводом в датагрид(в цикле)... если есть киньте код, если нет то обьясните пожалуйста подробно, приблизительно я знаю)))
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #1 : 12-10-2010 13:23 » |
|
Линдси, сначала объясни, что ты знаешь приблизительно.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Линдси
Интересующийся
Offline
|
|
« Ответ #2 : 13-10-2010 06:58 » |
|
Знаю insert параметризированный, для отображение и сохранение таблицы, DataSet ds = new DataSet(); потом используется адаптер, селектуомманд .... адаптер Fill , читает набор данных из датасет, дальше программно привязываешь DataSourse к таблице, и как-то также для выборки только используя датаридер, Но синтаксис цикл построчный, у меня не выходит, да и выборка, в принципе тоже...
Добавлено через 59 секунд: Ну ещё для сохранения прописывается... da.Update();
|
|
« Последнее редактирование: 13-10-2010 06:59 от Линдси »
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #3 : 13-10-2010 18:38 » |
|
Линдси, ну раз ты знаешь DataReader, то знаешь и ответ на вопрос. Именно DataReader читает данные последовательно запись за записью.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Линдси
Интересующийся
Offline
|
|
« Ответ #4 : 15-10-2010 06:51 » |
|
А как сохранять в таблицу?)
Добавлено через 6 минут и 56 секунд: из одной в другую)
|
|
« Последнее редактирование: 15-10-2010 06:58 от Линдси »
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #5 : 15-10-2010 10:43 » |
|
Линдси, добавить в DataTable строчки или изменить значения полей в существующих строчках. Удалить ненужные строчки. Затем для DataAdapter определить update, insert и delete команды и вызвать метод Update.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Линдси
Интересующийся
Offline
|
|
« Ответ #6 : 19-10-2010 10:04 » |
|
Хм,может проблема вообще в другом, как реализовать подключение двух БД, чтобы это делать или мне ....Сначало соеденение с одной БД, формировать таблицу в датасет, а потом в соеденнение с другой БД, читать и запиывать из датасет в другой датасет, а потом уже сохранять в таблицу))
Добавлено через 9 секунд: ?
|
|
« Последнее редактирование: 19-10-2010 10:04 от Линдси »
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #7 : 19-10-2010 12:18 » |
|
Линдси, ну что значит как? Можно в цикле читать из одной и писать в другую. Вроде бы у DataSet и DataTable был ещё метод Merge, который позволяет "слить" две одинаковых структуры с разными данными в одну с общими данными.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Линдси
Интересующийся
Offline
|
|
« Ответ #8 : 20-10-2010 09:01 » |
|
У access не общая структура с мускулом) И мне не просто залить данные у меня обновление данных)) Эти записи будут добавляться бесконечно и если мне их каждый раз обьеденять , рехнуться можно, ДатаСет не наследуемый тип как выяснилось, так что провернуть финт я не могу)
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #9 : 20-10-2010 10:44 » |
|
Линдси, если структура копируемой таблицы известна, то оставь всякие датасеты - считывай построчно из Access и отдельным подключением к MySQL посредством запроса INSERT вставляй эти данные в целевую таблицу.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Линдси
Интересующийся
Offline
|
|
« Ответ #10 : 21-10-2010 10:39 » |
|
using System; using System.Data; using System.Collections.Generic; using System.Linq; using System.Text; using MySql.Data; using MySql.Data.MySqlClient; using MySql.Data.Types;
namespace ConsoleApplication10 { class Program { static void Main(string[] args) { MySqlConnection cn = new MySqlConnection(@"Server = localhost ; Database = vant;
UserID = root; Password = 12;");}
public void InsertRow(string myCon) { // If the connection string is empty, use a default. if(myCon == "") { myCon = (@"Server = localhost ;Database = vantage;UserID = root; Password = 12"); }
MySqlConnection myConnect = new MySqlConnection(myCon); MySqlTransaction trans = myConnect.BeginTransaction();
//INSERT string inssq = "SELECT (insert into dtb4.dbo.vantage (nam) values(@nam)) FROM dtb2.dbo.vant "; MySqlCommand cmd = new MySqlCommand(inssq);
cmd.Parameters.AddWithValue("nam", @"nam"); cmd.Parameters["nam"].Value = @"nam";
cmd.Connection = myConnect; cmd.Connection.Open(); cmd.ExecuteNonQuery(); cmd.Connection.Close(); //Испольуем метод CreateCommand для создания команды cmd = myConnect.CreateCommand(); cmd.Transaction = myConnect.BeginTransaction(); cmd.CommandText = "select * from dtb4"; MySqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
//чтение данных while (rdr.Read()) { string tmp = ""; for (int i = 0; i < rdr.FieldCount - 1; i++) { if (tmp != "") tmp += "\t"; tmp += rdr[i]; }
Console.WriteLine(tmp); Console.Read(); }
rdr.Close(); myConnect.Close(); }
} }
Вопрос... Неувязка с датаридером, он выводит первую таблицу, но вторую игнорирует, даже если присобачить тот что выше) ....Предложения , комментарии?))...Поправка похоже дело в инсёрте, эта сволочь не передаёт данные, сейчас между мускулом, но эт у меня аксеса под рукой нет)
|
|
« Последнее редактирование: 21-10-2010 12:18 от Линдси »
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #11 : 22-10-2010 14:19 » |
|
SELECT (insert into dtb4.dbo.vantage (nam) values(@nam)) FROM dtb2.dbo.vant Я не знаю, является ли это корректным для MySQL, но в стандартном SQL такая инструкция недопустима. Что ты хочешь сделать этой командой? MySqlCommand cmd = new MySqlCommand(inssq); ... cmd = myConnect.CreateCommand();
Используется одна и та же переменная. Первая команда, выполнив ExecuteNonQuery, ничего не возвращает. Когда присваивается вторая команда, первая команда теряется. Вторая команда выполняет запрос select * from dtb4 Это одна таблица. Где ты ожидаешь увидеть вторую таблицу?
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Линдси
Интересующийся
Offline
|
|
« Ответ #12 : 29-10-2010 12:52 » |
|
Дошло....Вот как, но опять возник вопрос , как прописать запрос что бы из перрвой базы данные передовались лишь те которых не хватает во второй, как-то через max(dat)... но я без понятия как). using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using MySql.Data; using MySql.Data.MySqlClient; using MySql.Data.Types; namespace WindowsFormsApplication1 { public partial class Form1 : Form {
MySqlConnection cn = new MySqlConnection(@"Server = localhost ; Database = vant;
UserID = root; Password = 12;"); MySqlConnection cn2 = new MySqlConnection(@"Server = localhost ; Database = vantage; UserID = root; Password = 12;");
public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) {
}
private void button1_Click(object sender, EventArgs e) { cn.Open(); cn2.Open(); //1 MySqlCommand cmd = new MySqlCommand(); cmd = cn.CreateCommand(); cmd.CommandText = "select * from dtb2"; MySqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); //2 MySqlCommand cmd2 = new MySqlCommand(); cmd2 = cn2.CreateCommand(); cmd2.CommandText = "insert into dtb4 (nam,dat) values(@nam,@dat) "; //cmd2.Parameters.AddWithValue("nam", "@nam"); cmd2.Parameters.Add("@nam", MySqlDbType.Text, 255, "nam"); cmd2.Parameters.Add("@dat", MySqlDbType.DateTime, 12, "dat"); //cmd2.Parameters["@nam"].Direction = ParameterDirection.Input; //cmd2.Parameters["@dat"].Direction = ParameterDirection.Input;
while (rdr.Read()) {
cmd2.Parameters["@nam"].Value = rdr[1].ToString(); cmd2.Parameters["@dat"].Value = System.DateTime.Now; cmd2.ExecuteNonQuery(); string tmp = ""; for (int i = 0; i < rdr.FieldCount - 1; i++) { if (tmp != "") tmp += "\t"; tmp += rdr[i].ToString(); }
string sql = @"SELECT * FROM dtb4"; MySqlDataAdapter da = new MySqlDataAdapter(sql, cn2); DataSet ds = new DataSet("dtb4");
da.Fill(ds, "dtb4"); dataGridView1.DataSource = ds.Tables["dtb4"];
}
rdr.Close(); cn.Close(); cn2.Close();
}
private void button2_Click(object sender, EventArgs e) { } } }
Добавлено через 53 минуты и 14 секунд:О и кинтье пожалуйста какую-нить ссылку на пример с ProgressivBar, только Шилдта не упоминайте ради бога))
|
|
« Последнее редактирование: 29-10-2010 13:45 от Линдси »
|
Записан
|
|
|
|
|