Здравствуйте, у меня есть база данных подключение и отображение в DataGrid у меня получилось сделать (программа на C#), но у меня не получается вносить новые данные. Вот код, который я использую для подключения и отображения базы данных: | Код | private void Form1_Load(object sender, EventArgs e) {
string catBD = Application.StartupPath + "\\photos database.mdb"; string conBD = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + catBD + ";Jet OLEDB:Database Password=\"\"";
OleDbConnection conn = new OleDbConnection(conBD); // создание объекта Connection. conn.Open(); // установка соединения с базой данных. //к этому моменту у нас есть подключение к БД DataSet ds = new DataSet(); // создание объектf DataSet OleDbDataAdapter adap = new OleDbDataAdapter("Select * from custom", conn); // создане объекта DataAdapter adap.Fill(ds); // Заполнение объекта DataSet. conn.Close(); // теперь мы можем закрыть соединение. //к этому моменту создана локальная версия БД и прямое соеденение больше не нужно DataTable dt = ds.Tables[0]; // извлечение таблицы из объекта DataSet. dataGridView1.DataSource = dt; // отображение таблицы в объекте DataGrid //к этому моменту таблица отображена на форме }
|
А вот код, полностью, где я пытаюсь внести новые данные в таблицу: | Код | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.OleDb; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string catBD = Application.StartupPath + "\\photos database.mdb"; string conBD = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + catBD + ";Jet OLEDB:Database Password=\"\""; OleDbConnection conn = new OleDbConnection(conBD); // создание объекта Connection. conn.Open(); // установка соединения с базой данных. //к этому моменту у нас есть подключение к БД DataSet ds = new DataSet(); // создание объектf DataSet OleDbDataAdapter adap = new OleDbDataAdapter("Select * from custom", conn); // создане объекта DataAdapter /*Создание объекта OleDbCommandBuilder - оболочки объекта DataAdapter, поддерживающей динамическое генерирование команд обновления, добавления и удаления данных. */ OleDbCommandBuilder bldr = new OleDbCommandBuilder(adap); adap.Fill(ds); // Заполнение объекта DataSet. conn.Close(); // теперь мы можем закрыть соединение. //к этому моменту создана локальная версия БД и прямое соеденение больше не нужно DataTable dt = ds.Tables["Table"]; // извлечение таблицы из объекта DataSet. dataGridView1.DataSource = dt; // отображение таблицы в объекте DataGrid //к этому моменту таблица отображена на форме //внесение новых записей dt = ds.Tables["custom"]; DataRow drCurrent = dt.NewRow(); drCurrent["№"] = "4"; drCurrent["FIO"] = "Сидоров"; drCurrent["address"] = "Ул. Дугина 8"; drCurrent["(tele)phone number"] = "800 226-0752"; drCurrent["order status"] = "Обработан"; drCurrent["data"] = "23.12.12"; dt.Rows.Add(drCurrent); // Сохранение изменений в базе данных, conn.Open(); adap.Update(ds); conn.Close(); } } }
|
В общем компилятор ни каких ошибок не выдаёт, но и данные не вносятся, мне сказали, что обновления не происходят потому что нет запроса на обновление. Как мне это сделать, какие строки кода добавить, или изменить? И как можно вносить данные с помощью DataGrid? А так же хочу, чтобы подключение и создание всех объектов (dataset, dataadapter) были созданы в Form_Load, а уже внесение новых данных в другой процедуре, через кнопку, когда пишу вот так: | Код | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.OleDb; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string catBD = Application.StartupPath + "\\photos database.mdb"; string conBD = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + catBD + ";Jet OLEDB:Database Password=\"\""; OleDbConnection conn = new OleDbConnection(conBD); // создание объекта Connection. conn.Open(); // установка соединения с базой данных. //к этому моменту у нас есть подключение к БД DataSet ds = new DataSet(); // создание объектf DataSet OleDbDataAdapter adap = new OleDbDataAdapter("Select * from custom", conn); // создане объекта DataAdapter /*Создание объекта OleDbCommandBuilder - оболочки объекта DataAdapter, поддерживающей динамическое генерирование команд обновления, добавления и удаления данных. */ OleDbCommandBuilder bldr = new OleDbCommandBuilder(adap); adap.Fill(ds); // Заполнение объекта DataSet. conn.Close(); // теперь мы можем закрыть соединение. //к этому моменту создана локальная версия БД и прямое соеденение больше не нужно DataTable dt = ds.Tables["Table"]; // извлечение таблицы из объекта DataSet. dataGridView1.DataSource = dt; // отображение таблицы в объекте DataGrid //к этому моменту таблица отображена на форме } private void button1_Click(object sender, EventArgs e) { //внесение новых записей dt = ds.Tables["custom"]; DataRow drCurrent = dt.NewRow(); drCurrent["№"] = "4"; drCurrent["FIO"] = "Сидоров"; drCurrent["address"] = "Ул. Дугина 8"; drCurrent["(tele)phone number"] = "800 226-0752"; drCurrent["order status"] = "Обработан"; drCurrent["data"] = "23.12.12"; dt.Rows.Add(drCurrent); // Сохранение изменений в базе данных, conn.Open(); adap.Update(ds); conn.Close(); } } }
|
Но все объекты conn, adap и так далее уже не видны в другой процедуре, как мне сделать, чтобы были видны?
|