Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > DataGridView и С#


Автор: jonkaspar2008 9.3.2012, 23:28
Вечер добрый! Суть проблемы такова - пишу программу на C# по взаимодействию с БД MS Access. Делаю это в первый раз, поэтому не знаю как решить проблему. Необходимо вывести значение БД в DataGridView и после изменения занести обратно в БД. Первую часть выполняет отлично, но при нажатии на клавишу "Сохранить изменения" выдает ошибку: 

 Необработанное исключение типа "System.Data.OleDb.OleDbException" произошло в System.Data.dll
 Дополнительные сведения: Ошибка синтаксиса в инструкции UPDATE.

 Текст программы:
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;

using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;

using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace KasperovichTypography
{
    public partial class SuppliersShowAllFrm : Form
    {
        public SuppliersShowAllFrm()
        {
            InitializeComponent();
        }

        OleDbDataAdapter dataAdapter;

// Загрузка Формы;
        private void SuppliersFrm_Load(object sender, EventArgs e)
        {
            
            
            
            // Формируем запрос к базе данных –
            string sql = "SELECT * FROM Supplier";
            string connectionString;
 
            // DataTable сохраняет данные в памяти как таблицу
            DataTable dataTable = new DataTable();
     
            //Связывание с базой данных Access 2003 – *.mdb
            connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=datatabels.mdb";
            OleDbConnection connection = new OleDbConnection(connectionString);
            connection.Open();
     
            OleDbCommand OleDbCommand = new OleDbCommand(sql, connection);
     
            dataAdapter = new OleDbDataAdapter(OleDbCommand);
     
            //Создаем построитель команд
            //Для адаптера становится доступной команда Update
            OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(dataAdapter);
     
            // Данные из адаптера поступают в DataTable
            dataAdapter.Fill(dataTable);
     
            // Связываем данные с элементом DataGridView
            dataGridView.DataSource = dataTable;
     
            // Очистка
            connection.Close();
            
        }


// Кнопка "Применить изменения";
        private void BtnSaveSuppliers_Click(object sender, EventArgs e)
        {
            try
            {
                dataAdapter.Update((DataTable)dataGridView.DataSource);
                MessageBox.Show("Изменения в базе данных выполнены!", "Уведомление о результатах", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception)
            {
                MessageBox.Show("Изменения в базе данных выполнить не удалось!", "Уведомление о результатах", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }


        }
    }
}


Помогите решить проблему! Спасибо.

Автор: Данкинг 9.3.2012, 23:40
А что содержится в запросе на обновление?

Автор: jonkaspar2008 9.3.2012, 23:41
я изменяю данные в dataGridView и эти изменения записываются

Автор: Данкинг 9.3.2012, 23:44
Видимо, это в раздел по C# тогда.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)