2
22Serega22
Всем доброе утро!!!
Есть файл БД Access - Phones.mdb с полями "Имя" и "Телефон", нужно написать программу на С#, которая будет открывать этот файл и в которой его можно будет изменять и сохранять изменения.
Программу я написал, но проблема в том, что в ней изменения сохраняются только при добавлении строк, а при изменении существующих строк изменения не сохраняются.
Кто знает в чем может быть проблема?????
Вот сам код:
Есть файл БД Access - Phones.mdb с полями "Имя" и "Телефон", нужно написать программу на С#, которая будет открывать этот файл и в которой его можно будет изменять и сохранять изменения.
Программу я написал, но проблема в том, что в ней изменения сохраняются только при добавлении строк, а при изменении существующих строк изменения не сохраняются.
Кто знает в чем может быть проблема?????
Вот сам код:
C++:
using System;
using System.Windows.Forms;
using System.Data;
// Пространство имен для работы с базами данных SQL Server
using System.Data.SqlClient;
using System.Drawing;
using System.Diagnostics;
// Пространство имен для работы с базами данных Access
using System.Data.OleDb;
class DataInOutGrid : Form
{
OleDbDataAdapter dataAdapter;
DataGridView dataGridView;
public DataInOutGrid()
{
//Изменяем размеры формы
this.Width = 450;
this.Height = 400;
// Указываем заголовок окна
this.Text = "Записная книжка";
// Добавляем элемент DataGridView на форму
dataGridView = new DataGridView();
dataGridView.Width = 414;
dataGridView.Height = 250;
dataGridView.Location = new Point(10, 10);
dataGridView.AutoResizeColumns();
this.Controls.Add(dataGridView);
// Добавляем командную кнопку
Button buttonSave = new Button();
buttonSave.Location = new Point(100, 320);
buttonSave.Width = 220;
buttonSave.Text = "Сохранить изменения в базе данных!";
buttonSave.Click += new System.EventHandler(ButtonSave_Click);
buttonSave.Parent = this;
// Формируем запрос к базе данных –
string sql = "SELECT * FROM PHONES";
string connectionString;
// DataTable сохраняет данные в памяти как таблицу
DataTable dataTable = new DataTable();
//Связывание с базой данных Access 2003 – *.mdb
connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
@"Data Source= ../../../databases/Phones.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();
}
static void Main()
{
// Создаем и запускаем форму
Application.Run(new DataInOutGrid());
}
void ButtonSave_Click(object sender, System.EventArgs args)
{
try
{
dataAdapter.Update((DataTable)dataGridView.DataSource);
MessageBox.Show("Изменения в базе данных выполнены!",
"Уведомление о результатах", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception)
{
MessageBox.Show("Изменения в базе данных выполнить не удалось!",
"Уведомление о результатах", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}