2013-09-02 5 views
0

В моем приложении у меня есть кнопка, которая будет использовать команду select для заполнения моего datatable, этот datatable является sourcebind для datagridview.Обновление datatable back to mysql

Что я хочу достичь, я хочу, чтобы вторая кнопка «Обновить», чтобы записать изменения, сделанные в представлении datagrid (редактирование строки, удаление строки), я нашел информацию о MySqlCommandBuilder, но не смог сделать он работает MySqlCommandBuilder

Как это сделать, чтобы пользователи могли обновлять данные и записывать их обратно в mysql.

ответ

2

Когда вы заселены первоначально ваш DataTable вы использовали экземпляр объекта под названием MySqlDataAdapter с кодом, который может быть как этого

string query = "SELECT * FROM yourTableName"; 
MySqlDataAdapter adapter = new MySqlDataAdapter(query, connString); 
MySqlCommandBuilder builder = new MySqlCommandBuilder(adapter); 
DataTable dt = new DataTable(); 
adapter.Fill(dt); 
BindingSource bs = new BindingSource(); 
bs.DataSource = dt; 
dgview.DataSource = bs; 

теперь, вы измените DataGrid модифицирования, добавление или удаление строк, и каждый изменение, которое вы делаете в datagrid, отражается на базовом источнике данных (datatable). Если вы хотите обновить свои записи в базе данных, вам нужно сохранить этот MySqlDataAdapter (как глобальную переменную внутри вашей формы) и просто вызвать метод Update экземпляра адаптера, когда он вам нужен

BindingSource bs = dgview.DataSource As BindingSource; 
adapter.Update(bs.DataSource as DataTable); 

Этот вызов будет использовать экземпляры класса MySqlCommand созданного MySqlCommandBuilder для обновления базы данных (Имейте в виду, что MySqlCommandBuilder работает только выберите запрос, который включает в себя только одну таблицу - никакое соединение разрешено)

+0

Большое спасибо , это действительно был MySqlDataAdapter на кнопке обновления, которую я отсутствовал. – PandaNL