powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как правильно замутить интерфейс для работы с DB
12 сообщений из 12, страница 1 из 1
Как правильно замутить интерфейс для работы с DB
    #32956511
Astakhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть несколько связаных таблиц. В основной таблице ID - Identity.
Основная таблица выводится в ListBox.
Код: plaintext
1.
2.
listBox_Group.DisplayMember = "GUS1002";
listBox_Group.ValueMember = "GUS1001" ;
listBox_Group.DataSource =  gr_dt;
Где gr_dt - та самая таблица.
При передвижении по listBox_Group справа выводится сдержимое дополнительных данных из связаных таблиц.
ВОПРОС: Как правильно организовать добавление, удаление и редактирование данных?
Т.е. сам ввод новых или изменение старых данных происходит в диалоговом окне. Интересуют методы записи в DB.
1. Внести все отдельными запросами и потом перечитать данные - перечитывание данных занимает относительно длительное время.
2. Для изменения пробовал делать примерно так:
Код: plaintext
1.
2.
3.
DataRowView drv = ((DataRowView)listBox_Group.SelectedItem);
drv.BeginEdit();
//...
drv.EndEdit();
данные автоматически изменяются и в базе.
Но возникли сложности с добавлением новых данных и основная проблема с получением ID Identity.
Можно ли хотябы отключить автоматическое изменение данных в базе при BeginEdit/EndEdit ?
Тогда отдельно можно будет добавить данные в базу и отдельно в локальный DataTable.
Понятно, что можно перелить данные из таблицы в свою структуру и уже эту структуру привяцывать к listBox_Group, но должен же быть и привильный способ решения подобной задачи.
...
Рейтинг: 0 / 0
Как правильно замутить интерфейс для работы с DB
    #32956717
Стр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Astakhov...данные автоматически изменяются и в базе...
Можно ли хотябы отключить автоматическое изменение данных в базе при BeginEdit/EndEdit ?
Тогда отдельно можно будет добавить данные в базу и отдельно в локальный DataTable.поясни, пожалуйста, что ты понимаешь под словом "автоматически" ???
...
Рейтинг: 0 / 0
Как правильно замутить интерфейс для работы с DB
    #32956743
Astakhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это значит, что когда я делаю следующее
Код: plaintext
1.
2.
3.
4.
5.
6.
DataRowView f_dr;
...
f_dr = ((DataRowView)listBox_Group.SelectedItem);
...
f_dr.BeginEdit();
f_dr["GUS1003"] = dateTimePicker1.Value;
f_dr.EndEdit();
То после этой операции у меня меняются данные и в базе...
А хотелось бы, что б это влияло только на текущие, локальные данные.
В базу я сам запишу, ручками.
...
Рейтинг: 0 / 0
Как правильно замутить интерфейс для работы с DB
    #32956750
Стр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AstakhovТо после этой операции у меня меняются данные и в базе...
А хотелось бы, что б это влияло только на текущие, локальные данные.
В базу я сам запишу, ручками.Совсем уже непонятно. То автоматически, то ручками...
Если ручками, то какие проблемы ?

---
Может ты что-то подразумеваешь под словом "база" ?
...
Рейтинг: 0 / 0
Как правильно замутить интерфейс для работы с DB
    #32956761
Стр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извини за мою возможную тупость, но мне ОЧЕНЬ интересна возможность, которой ты пользуешься в ADO.NET - автоматическое обновление базы данных на сервере. Т.е. насколько я понял - это без ручного программирования адаптеров (adapter.Update()) и команд (command.ExecuteNotQuery()) занесение любых изменений из DataSet в СУБД.
...
Рейтинг: 0 / 0
Как правильно замутить интерфейс для работы с DB
    #32956766
Astakhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня сервер (SQL Server) находится на относительно слабом коннекте.
Данные которые я получаю по запросу достаточно грамоздки.
Требуется добавлять, изменять и удалять определенные записи. При этом не хочется перечитывать все данные после каждого изменения.
В случае если я меняю данные следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
DataRowView f_dr;
...
f_dr = ((DataRowView)listBox_Group.SelectedItem);
...
f_dr.BeginEdit();
f_dr["GUS1003"] = dateTimePicker1.Value;
f_dr.EndEdit();
То данные в базе данных изменяются автоматически, хотя я этого не просил.
Бог с ним, но в этом случае я не знаю как мне добавить новую строку, что б она так-же автоматически добавилась в базу данных и при этом узнать с каким ID (учитывая что он Identity) добавилась запись.
В следствии этого, мне надо, что б при выше описаном варианте, данные изменились только в полученой выборке, но не изменились в базе данных.
Тогда я отдельно изменил бы данные у себя и отдельно работал бы с базой.
Соответственно в перечитывании данных отпадет необходимость.
...
Рейтинг: 0 / 0
Как правильно замутить интерфейс для работы с DB
    #32956770
Astakhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СтрИзвини за мою возможную тупость, но мне ОЧЕНЬ интересна возможность, которой ты пользуешься в ADO.NET - автоматическое обновление базы данных на сервере. Т.е. насколько я понял - это без ручного программирования адаптеров (adapter.Update()) и команд (command.ExecuteNotQuery()) занесение любых изменений из DataSet в СУБД.
Абсолюто верно.
Все происходит примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
string TmpString="server="+CSt_DB.DB_ServerName+";"+
		"uid="+CSt_DB.DB_UserName+";"+
		"pwd="+CSt_DB.DB_PasswordUser+";"+
		"database="+CSt_DB.DB_BaseName+";";

sql_Conn = new SqlConnection(TmpString);
string str_SQL = "Select * from GUS1 where GUS1005 = 1";
dtbl = new DataTable("GUS");
sd_adap = new SqlDataAdapter(str_SQL, sql_Conn);
sd_adap.Fill(dtbl);
listBox_Group.DisplayMember = "GUS1002";
listBox_Group.ValueMember = "GUS1001" ;
listBox_Group.DataSource =  gr_dt;
При инициализации, болше ничего не делал. Крест на пузе химическим карандашм.
Сам обалдел когда при изменениях данных, они начали изменяться и в базе данных.
...
Рейтинг: 0 / 0
Как правильно замутить интерфейс для работы с DB
    #32956774
Стр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторТо данные в базе данных изменяются автоматически, хотя я этого не просилМистика :)

Посмотри, может быть кто-то (???) подписался на события для dtbl (типа OnRowDeleted, OnRowChanged, OnColumnChanged) и отлавливает любые изменения в DataTable и переносит их в СУБД ? Но опять же, без адаптера и/или команд здесь не обойтись.
...
Рейтинг: 0 / 0
Как правильно замутить интерфейс для работы с DB
    #32956778
Стр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и еще заполняешь dtbl, а в качестве источника данных для ListView используешь gr_dt - может за gr_dt кто-то (???) следит ?
...
Рейтинг: 0 / 0
Как правильно замутить интерфейс для работы с DB
    #32956784
Astakhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нее, точно ничего подобного нет.
Никто кроме меня это и сделать то не мог, а я этого не делал.
Да и программка то не большая пока.
Чудеса.
...
Рейтинг: 0 / 0
Как правильно замутить интерфейс для работы с DB
    #32956914
Стр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AstakhovДа и программка то не большая пока.
Чудеса.Если в ней нет ноу-хау, не смог ли ты выложить сюда ее исходники (присобачить zip к сообщению) ?

Заинтриговал - это слишком мягко сказано :)
...
Рейтинг: 0 / 0
Как правильно замутить интерфейс для работы с DB
    #32958100
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DataWizard' ами не пользовались?
И что скрывается под словом "база данных"?

P.S. Встаю в очередь на просмотр исходников :-)

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как правильно замутить интерфейс для работы с DB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]