запись в Msql

Тема в разделе ".NET", создана пользователем Niceday, 19 мар 2007.

  1. Niceday

    Niceday Гость

    Сделал форму, добавил DataGridView, ну он понятно что сам добавил productBindingSource, productTableAdapter, добавил кнопку в форме, а теперь вопрос как при нажатии этой кнопки записать в MSQL измененную таблицу, в мсдн смотрел самплы не помогли по data saving, а голова сегодня далеко от состояния думать :rolleyes:
    PS: пишу это на c#
     
  2. Niceday

    Niceday Гость

    Код (Text):
    try
    {
    this.Validate();
    this.productBindingSource.EndEdit();
    this.productTableAdapter.Update(this.MainBD.product);
    MessageBox.Show("Update successful");
    }
    catch (System.Exception ex)
    {
    MessageBox.Show("Update failed");
    }
    так он выходи в Exception, а если убрать трай и кетч то ошибка:
    Update requires a valid UpdateCommand when passed DataRow collection with modified rows.
     
  3. Niceday

    Niceday Гость

    Вот это и не понятно, почему:
    UpdateCommand неправильная когда передает DataRow с измененными строками
    Чтобы решать эту проблему, удостоверьтесь, что DataAdapter имеет правильный UpdateCommand

    Заливка DataGriView при создании требует тоже самое но работает.
    this.productTableAdapter.Fill(this.MainBD.product);
     
  4. Pasha

    Pasha Гость

    Для: Niceday
    this.productTableAdapter.Fill(this.MainBD.product); использует SelectCommand, потому и работает.

    проверь что у твоего productTableAdapter свойство UpdateCommand определено.
     
  5. Niceday

    Niceday Гость

    Походу не определено, а как и где его определить?)
    по подсказке понял что можно:
    1) написать вручную
    2) используя CommandBuilder для написания во время выполнения
    3) используя Data tools в дизайнере
    тока что-то найти не могу ничего
     
  6. NikSoft

    NikSoft Гость

    Для: Niceday
    Вот тебе пример:
    Код (Text):
    static private DataSet CreateCommandAndUpdate(string connectionString, string queryString)
    {
    DataSet dataSet = new DataSet();

    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
    connection.Open();
    OleDbDataAdapter adapter = new OleDbDataAdapter();
    adapter.SelectCommand = new OleDbCommand(queryString, connection);
    OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

    adapter.Fill(dataSet);

    // Code to modify data in the DataSet here.

    adapter.UpdateCommand = builder.GetUpdateCommand();
    adapter.Update(dataSet);
    }
    return dataSet;
    }
     
  7. Niceday

    Niceday Гость

    а в queryString что тогда передавать?
    "SELECT * FROM [product]"?
     
  8. NikSoft

    NikSoft Гость

    Передавай те поля из [product], что тебе нужны для работы
    Если тебе нужны все поля, то делай SELECT * FROM [product]
     
  9. Niceday

    Niceday Гость

    всеравно не получается
    Код (Text):
    private void button1_Click(object sender, EventArgs e)
    {
    try
    {
    this.Validate();
    this.productBindingSource.EndEdit();
    //this.productTableAdapter.UpdateCommand = builder.GetUpdateCommand();
    this.productTableAdapter.Update(this.TESTDataSet.product);
    MessageBox.Show("Update successful");
    }
    catch (System.Exception ex)
    {
    MessageBox.Show("Update failed");
    }
    }
    без создания не работало, а теперь проблемма с созданием (если раскоментить): пишет, что
    'layer_list.IS07TESTDataSetTableAdapters.layerTableAdapter' does not contain a definition for 'UpdateCommand'
    и
    The name 'builder' does not exist in the current context

    в чем моя ошибка?
     
  10. NikSoft

    NikSoft Гость

    Для: Niceday
    Ты забыл создать обьект типа CommandBuilder
     
  11. Niceday

    Niceday Гость

    а есть разница между TableAdapter и DataAdapter? просто я использую первое, а в мсдн все про 2ое было когда начинал это делать, может в этом основная проблемма?
     
  12. Niceday

    Niceday Гость

    сам разобрался:
    -открываем в солюшен эксплорере датасет
    -там находим нужную таблицу
    -правой кнопкой по заголовку, configure
    -жмем далее, далее, готово
    и вот у нас апдейт описан, ну и не только он
     
  13. Niceday

    Niceday Гость

    родилися еще пара вопросов про DataGridView:
    если мы подрубили к нему TableAdapter и уже в программе кликнули на клетку, то получаем private void dataGridView1_SelectionChanged(object sender, EventArgs e)
    1) а как ему послать что-то подобное если на пример мне по сообщению от таймера надо просто выбирать определенный элемент, например когда запускается таймер, то нулевой и пошли по очереди по одному
    2) можно ли у DataGridView сделать его скролл бар слева а не справа?
     
  14. Niceday

    Niceday Гость

    ну или вопрос: есть DataGridView и надо проверить его табл адаптер на наличие определенного элемента (например с id_shop == 6 в MSQL) и если есть таковой то выбрать его как текущий DataRow

    и еще 1 вопрос по сортировке надо отсортировать dataGridView, по столбцу ид магазина, т.к. при записи они иногда в начало таблицы пишутся и номера получаются не по порядку
    dataGridView1.Sort(shop_idDataGridViewTextBoxColumn, ...);
    вопрос собственно что сунуть во 2ой параметр
     
Загрузка...

Поделиться этой страницей