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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Firebird методы INSERT,UPDATE,DELETE, Firebird в C# 
V
    Опции темы
mrVerus
Дата 26.4.2010, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я недавно сел на C# поэтому возникают следующие вопросы:
Есть GridView данные он получает из FBdataAdapter. Как изменения сделанные пользователем в GridView залить в обратно в базу. Знаю что в FBdataadapter есть методы такие как INSERT, UPDATE, DELETE, только механизм работы их не ясен. Как происходит обновления базы7  Например в таблице GridView пользователь внес изменения в нескольких записях, как должно произойти изменения в БД с помощью UPDATE. Есть скрипт UPDATE, он что прокатится по всему массиву записей таблицы7
Помогите пожалуйста 

PM MAIL   Вверх
mrVerus
Дата 27.4.2010, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Как работать с firebird7 Вся литература приводит примеры в режиме дизайн-тайма. Научился только получать данные БД по средствам SQL в dataGridView, а как залить изменения из gridview'a в BD7  Кто нибуть приведите пример7 smile 
PM MAIL   Вверх
mrVerus
Дата 28.4.2010, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ладно видимо меня никто не понял. Вопрос такой, есть команды INSERT,DELETE,UPDATE и SELECT.
Команда SELECT=”select * from t123”;
DataSet ds=new DataSet;
FbDataAdapter da=new FbDataAdapter();
da.SelectCommand=new FbCommand(“select * from t123”, connstr);
da.fill(ds);
Следовательно в DataGrid отобразит всю таблицу, (предупреждаю код примерный)
Вот впишу команды в Insert,Delete,Update,  как они будут генерироваться.
Для синхронизации данных м/у БД и данными введенными пользователем существует метод .update(ds). При вызове такого метода он автоматически вызовет команды SQL7
Простите недавно пришел из Delphi

PM MAIL   Вверх
Heinzz
Дата 28.4.2010, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

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



Используйте FbCommandBuilder
если ваша база данный не распределенная.


--------------------
user posted image
PM MAIL   Вверх
mrVerus
Дата 28.4.2010, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А как им  воспользоваться7 База данных работает через FBServer на удаленном ПК
PM MAIL   Вверх
Heinzz
Дата 28.4.2010, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

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



главное что на одном, так что просто это в connectionString укажите, разницы никакой нет.



--------------------
user posted image
PM MAIL   Вверх
mrVerus
Дата 28.4.2010, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



можно пример

Добавлено через 7 минут и 28 секунд
И вот еще при вызове метода .UPDATE(ds) команды SQL срабатыват автоматически7
Например пользователь в DataGrid'е изменил некаторые записи добавил новую. При .update выполнится соответ код, да?
Это как аналог Post в Delphi? 
PM MAIL   Вверх
Heinzz
Дата 28.4.2010, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

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



Код

    FbConnection  myConn     = new FbConnection(myConnection);    
    FbDataAdapter myDataAdapter = new FbDataAdapter();
    FbTransaction myTxn         = myConn.BeginTransaction();
    
    myDataAdapter.SelectCommand = new FbCommand(mySelectQuery, myConn, myTxn);
    FbCommandBuilder custCB     = new FbCommandBuilder(myDataAdapter);

    myConn.Open();

    DataSet custDS = new DataSet();
    myDataAdapter.Fill(custDS, "Employee");

    //code to modify data in dataset here

    //Without the FbCommandBuilder this line would fail
    myDataAdapter.Update(custDS, "Employee");

    myConn.Close();

    return custDS;




--------------------
user posted image
PM MAIL   Вверх
mrVerus
Дата 28.4.2010, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



И нужно передать параметры из datagrid'a при update, итд7

Добавлено через 11 минут и 6 секунд
 smile  это оканчательно меня запутало1

PM MAIL   Вверх
Heinzz
Дата 28.4.2010, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

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



пример для MSSql, у Вас просто немного другие классы.
Код

 public partial class Form1 : Form
    {
        string myConnection = @"Data Source=HEINZZY\SQLEXPRESS;Initial Catalog=MyDB;Integrated Security=True";
        SqlConnection myConn;
        SqlDataAdapter myDataAdapter;
        DataSet custDS;


        public Form1()
        {
            InitializeComponent();

            myConn = new SqlConnection(myConnection);

            string mySelectQuery = "SELECT * FROM Customers";
            myDataAdapter = new SqlDataAdapter(mySelectQuery,myConn);
            
            //вот эта строка делает Update комманду
            SqlCommandBuilder custCB = new SqlCommandBuilder(myDataAdapter);

            myConn.Open();
            custDS = new DataSet();
            myDataAdapter.Fill(custDS, "Customers");
            dataGridView1.DataSource = custDS;
            dataGridView1.DataMember = "Customers";
            myConn.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Сохранить изменения
            myDataAdapter.Update(custDS, "Customers");
        }
    }




--------------------
user posted image
PM MAIL   Вверх
mrVerus
Дата 28.4.2010, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ТЕ за открытием и закрытием соединения следить не нужно7
PM MAIL   Вверх
Heinzz
Дата 28.4.2010, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

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



как видите в моем коде изменения производятся уже после закрытия соединения.
 smile 


--------------------
user posted image
PM MAIL   Вверх
mrVerus
Дата 29.4.2010, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Заставил работать но без FbCommandBuilder
PM MAIL   Вверх
KelTron
Дата 29.4.2010, 07:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Для адаптера не нужно открывать соединение, он сам всё сделает, так что это лишнее:
Код

myConn.Open();
...
myConn.Close();

А если и надо открывать то лучше через using:
Код

using (myConn = new SqlConnection(myConnection))
{
            myConn.Open();
            ...
}

Так можно быть уверенным, что соединение будет закрыто в любом случае.


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
mrVerus
Дата 29.4.2010, 07:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Огроманое спасибо + Heinzz'у 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

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


 




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


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

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