Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Внесение новых данных в БД. 
:(
    Опции темы
goodwen053
Дата 3.8.2011, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 5.4.2011

Репутация: нет
Всего: нет



Здравствуйте, у меня есть база данных подключение и отображение в 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 и так далее уже не видны в другой процедуре, как мне сделать, чтобы были видны?
PM MAIL   Вверх
goodwen053
Дата 6.8.2011, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 5.4.2011

Репутация: нет
Всего: нет



Прошу помочь.
PM MAIL   Вверх
WarHog
Дата 6.8.2011, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.10.2007
Где: Воронеж

Репутация: 1
Всего: 2



Цитата

Обновления не происходят потому что нет запроса на обновление. 

Что происходит при выполнении такого кода?
Код

bldr.GetUpdateCommand().CommandText


Цитата

Но все объекты conn, adap и так далее уже не видны в другой процедуре, как мне сделать, чтобы были видны?

Не выполняй запросы внутри обработчиков, сделай отдельный компонент, который этим занимается и нужные объекты определи как приватные поля класса, а нужный тебе функционал определи в методах этого класса.
--------------------
PM MAIL   Вверх
Doss
Дата 17.10.2011, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 5.10.2007

Репутация: нет
Всего: нет



Ответ на добавление:
 
Код

using (OleDbConnection connection = new OleDbConnection(connect))
            {
                OleDbCommand command = new OleDbCommand(
                "INSERT into Imeg(im,Pid) Values(@im,@Pid)", connection);
                command.Parameters.Add("@im", OleDbType .LongVarBinary, photo.Length).Value = photo;
                command.Parameters.Add("@Pid", OleDbType.VarChar).Value = "Привет";
                connection.Open();
                command.ExecuteNonQuery();
               
            }


или

Код

  using (OleDbConnection conn = new OleDbConnection(connect))
            {
                try
                {
                    conn.Open();
                    //------------------------------------------------

                    //Соединение с БД и вывод 
                    da = new OleDbDataAdapter("INSERT into МаркиАвто(Марка)Values('" + GettxtName + "')", conn);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "Марка");
                    try
                    {
                        ds.AcceptChanges();
                    }
                    catch (SqlException ex)
                    {
                        MessageBox.Show(ex.Message, ex.Source);
                    }

                    //------------------------------------------------
                 
                    conn.Close();
                    ds.Dispose();
                    LoadBase();
                }
                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message, ex.Source);
                    conn.Close();
                }
            }


вот изменить
Код

 using (OleDbConnection conn = new OleDbConnection(connect))
            {
                try
                {
                    conn.Open();
                    da = new OleDbDataAdapter("UPDATE МаркиАвто set Марка='" + GettxtName + "' where id=" + selRow["id"] + "", conn);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "Марка");
                    try
                    {
                        ds.AcceptChanges();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, ex.Source);

                    }

                    conn.Close();
                    ds.Dispose();
                    LoadBase();
                }
                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message, ex.Source);
                    conn.Close();
                }
            }


вот удалить

Код

 using (OleDbConnection conn = new OleDbConnection(connect))
            {
                try
                {
                    conn.Open();
                    //----------------------------------------
                    da = new OleDbDataAdapter("Delete * from МаркиАвто Where id=" + selRow["id"] + "", conn);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "МаркиАвто");
                    try
                    {
                        ds.AcceptChanges();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, ex.Source);

                    }

                    conn.Close();
                    ds.Dispose();
                    LoadBase();
                }
                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message, ex.Source);
                    conn.Close();
                }
            }


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0654 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.