Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Базы данных > SQL
Перезагрузить страницу Не обновляются данные в таблице при изменении значений в DataGridView
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
tuchin tuchin вне форума
Member
 
Сообщений: 136
Сказал(а) спасибо: 6
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.02.2012
Question Не обновляются данные в таблице при изменении значений в DataGridView - 24.05.2016, 20:08

Сделал тестовую программу, в которой вроде бы изменении данных в DataGridView должны изменяться данные в базе данных:
csharp Код:
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 System.Data.OleDb;
 
namespace Reminder
{
  public partial class Form1 : Form
  {
    private OleDbConnection con;
    private DataSet ds;
    private OleDbDataAdapter da1;
    private OleDbCommand cmd;
    private OleDbParameter p;
    private BindingSource bs;
 
   public void fillDB(String strTableName, String strDsTable, OleDbDataAdapter da, DataGridView dgv, BindingNavigator bn)
   {
     cmd = con.CreateCommand();
     cmd.CommandText = "SELECT * FROM " + strTableName;
     da.SelectCommand = cmd;
     da.Fill(ds, strDsTable);
     bs = new BindingSource();
     bs.DataSource = ds.Tables[strDsTable];
     bn.BindingSource = bs;
     dgv.DataSource = bs;
   }
 
   public void updateDB(String strTableName, OleDbDataAdapter da)
   {
 
     String strUpd = "UPDATE " + strTableName + " SET " +
                     "surname = @surname, " +
                     "firstname = @firstname, " +
                     "birthdate = @birthdate, " +
                     "byear     = @byear " +
                     "WHERE id_contact = @id_contact";
     cmd = con.CreateCommand();
     cmd.CommandText = strUpd;
     p = cmd.Parameters.Add("@id_contact", OleDbType.BigInt, 5, "id_contact");
     p.SourceVersion = DataRowVersion.Original;    
     p = cmd.Parameters.Add("@surname", OleDbType.Char, 40, "surname");
     p.SourceVersion = DataRowVersion.Original;    
     p = cmd.Parameters.Add("@firstname", OleDbType.Char, 40, "firstname");
     p.SourceVersion = DataRowVersion.Original;    
     p = cmd.Parameters.Add("@birthdate", OleDbType.Date, 20, "birthdate");
     p.SourceVersion = DataRowVersion.Original;    
     p = cmd.Parameters.Add("@byear", OleDbType.Integer, 6, "byear");
     p.SourceVersion = DataRowVersion.Original;
     da.UpdateCommand = cmd;
   }
 
    public Form1()
     {
       InitializeComponent();
     }
 
    private void Form1_Load(object sender, EventArgs e)
    {
      con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\Reminder.mdb");
      try
      {
        con.Open();
      }
      catch
      {
        MessageBox.Show("Ошибка соединения с базой данных DBtest.mdb","Ошибка подключения к базе",
                         MessageBoxButtons.OK, MessageBoxIcon.Error);
        Application.Exit();
      }
      da1 = new OleDbDataAdapter();
      ds = new DataSet();
      fillDB("Contact", "tblContact", da1, dataGridView1, binNav1);
      updateDB("Contact", da1);
      dataGridView1.Columns[0].HeaderText = "Номер";
      dataGridView1.Columns[1].HeaderText = "Фамилия";
      dataGridView1.Columns[2].HeaderText = "Имя, отчество";
      dataGridView1.Columns[3].HeaderText = "День рождения";
      dataGridView1.Columns[4].HeaderText = "Год рождения";
      dataGridView1.Sort(dataGridView1.Columns[0], System.ComponentModel.ListSortDirection.Ascending);
    }
 
     private void toolStripButton1_Click(object sender, EventArgs e) // Кнопка на панели Binding Navigator
    {
      da1.Update(ds.Tables[0]);
    }
  }
}
Получаю ошибку при изменении поля в DataGridView и попытке записи изменений в базу данных при нажатии кнопки на панели Binding Navigator:
Необработанное исключение типа "System.Data.OleDb.OleDbException" произошло в System.Data.dll
Дополнительные сведения: Отсутствует значение для одного или нескольких требуемых параметров.
Вроде бы все параметры заданы.
Подскажите, пожалуйста:
1. Почему возникает ошибка при записи изменений? Вроде бы параметры для обновления я задаю.
2. Как правильно отлаживать приложения, работающие с базами данных? В частности, как в моем примере локализовать ошибку?
Вложения
Тип файла: zip Reminder.zip (31.5 Кб, 12 просмотров)
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WPF: глючек при изменении ширины DataGrid Aliq .NET 0 14.02.2012 13:49
Алгоритм для вычисления значений функции для нескольких значений аргумента в С++ imported_Гоша Вопросы начинающих программистов 3 07.12.2010 15:18
Масштабирование компонентов при изменении разрешения *Юльчик* C++ Builder 2 30.06.2010 22:37
Как узнать об изменении коллекции в Squeak Андрей А Smalltalk 12 22.07.2009 22:20
Как в datagridview отобразить данные из datasourse на сервере Liza_cetera Visual C++ 1 29.11.2008 21:44
Нужно суммировать данные с одного столбца в одной таблице frrizza Delphi 0 27.11.2008 17:26
Не обновляются драйвера для видюхи. Подпольщик Видеосистема 7 27.04.2008 03:37
Почему не обновляются значки ярлыков на рабочем столе? CJинг Любые вопросы от новичков 1 04.03.2008 20:21
DataGridView привязка к таблице данных sealmu .NET 6 17.08.2007 14:57
не обновляются данные на форме при работе макроса Pavel55 Visual Basic 2 26.08.2006 01:08
В написанной таблице не обрабатываются данные Хочу быть программистом C++ Builder 11 18.05.2006 19:41
Странные данные в таблице Execl Astilla Visual Basic 1 21.12.2004 15:25



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов