powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Сохранение данных из dataSet в БД
5 сообщений из 5, страница 1 из 1
Сохранение данных из dataSet в БД
    #36325082
maestro_skl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем, доброго времени суток. Почитал форум, понял, что подобные вопросы составляют чуть-ли не половину. Проблема в следующем: Есть две таблицы связанные отношением "один ко многим". При апдайте insert работает нормально, но вот delete и update работать отказываются. Вот пример кода, может я уже очевидного не вижу. Подскажите кто-нить.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
 public static FbDataAdapter CreateServiceAdapter( FbDataAdapter adapter, FbConnection connection)
        {   
            
            //Прописываем InsertCommand
            FbCommand command = new FbCommand("Insert into SERVICE(NAME_SERV,ID_SERV_KEY) " + "Values(?,?)", connection);
            command.Parameters.Add("NAME_SERV", FbDbType.VarChar, 1024, "NAME_SERV");
            command.Parameters.Add("ID_SERV_KEY", FbDbType.BigInt, 4, "ID_SERV_KEY");
            adapter.InsertCommand = command;
            //Прописываем DeleteCommand
            command = new FbCommand("Delete * from SERVICE Where ID_SERV_KEY = ?", connection);
            FbParameter param = command.Parameters.Add("ID_SERV_KEY", FbDbType.BigInt, 4, "ID_SERV_KEY");
            param.SourceVersion = DataRowVersion.Original;
            adapter.DeleteCommand = command;
            //Прописываем UpdateCommand
            command = new FbCommand("Update SERVICE set ID_SERV_KEY = @ID_SERV_KEY, NAME_SERV = @NAME_SERV Where ID_SERV_KEY = @oldID_SERV_KEY", connection);
            command.Parameters.Add("@ID_SERV_KEY", FbDbType.BigInt, 4, "ID_SERV_KEY");
            command.Parameters.Add("@NAME_SERV", FbDbType.VarChar, 1024, "NAME_SERV");
            param = new FbParameter();
            param = command.Parameters.Add("oldID_SERV_KEY", FbDbType.BigInt, 4, "ID_SERV_KEY");
            param.SourceVersion = DataRowVersion.Original;
            adapter.UpdateCommand = command;
            return adapter;
        }
        public static FbDataAdapter CreateService1Adapter(FbDataAdapter adapter, FbConnection connection)
        {
            FbCommand command = new FbCommand("Insert into SERVICE1(ID_KEY,ID,NAME,PARAMS,FORMATS,RANGE,BIG_LOGO,BUTTON_LOGO,STATE,ID_VPS,ID_SERV_KEY) " + "Values(?,?,?,?,?,?,?,?,?,?,?)", connection);
            command.Parameters.Add("ID_KEY", FbDbType.BigInt,4,"ID_KEY");
            command.Parameters.Add("ID", FbDbType.BigInt, 4, "ID_KEY");
            command.Parameters.Add("NAME", FbDbType.VarChar, 1024, "NAME");
            command.Parameters.Add("PARAMS", FbDbType.VarChar, 1024, "PARAMS");
            command.Parameters.Add("FORMATS", FbDbType.VarChar, 1024, "FORMATS");
            command.Parameters.Add("RANGE", FbDbType.VarChar, 1024, "RANGE");
            command.Parameters.Add("BIG_LOGO", FbDbType.VarChar, 1024, "BIG_LOGO");
            command.Parameters.Add("BUTTON_LOGO", FbDbType.VarChar, 1024, "BUTTON_LOGO");
            command.Parameters.Add("STATE", FbDbType.VarChar, 1024, "STATE");
            command.Parameters.Add("ID_VPS", FbDbType.VarChar, 1024, "ID_VPS");
            command.Parameters.Add("ID_SERV_KEY", FbDbType.BigInt, 4, "ID_SERV_KEY");
            adapter.InsertCommand = command;
            //Прописываем DeleteCommand
            command = new FbCommand("Delete * from SERVICE1 Where ID_KEY = ?", connection);
            FbParameter param = command.Parameters.Add("ID_KEY", FbDbType.BigInt, 4, "ID_KEY");
            param.SourceVersion = DataRowVersion.Original;
            adapter.DeleteCommand = command;
            //Прописываем UpdateCommand
            command = new FbCommand("Update SERVICE1 set ID_KEY = @ID_KEY, ID = @ID, NAME = @NAME, PARAMS = @PARAMS, FORMATS = @FORMATS, RANGE = @RANGE, BIG_LOGO = @BIG_LOGO, BUTTON_LOGO = @BUTTON_LOGO, STATE = @STATE, ID_VPS = @ID_VPS, ID_SERV_KEY = @ID_SERV_KEY Where ID_KEY = @oldID_KEY", connection);
            command.Parameters.Add("@ID_KEY", FbDbType.BigInt,4,"ID_KEY");
            command.Parameters.Add("@ID", FbDbType.BigInt, 4, "ID");
            command.Parameters.Add("@NAME", FbDbType.VarChar, 1024, "NAME");
            command.Parameters.Add("@PARAMS", FbDbType.VarChar, 1024, "PARAMS");
            command.Parameters.Add("@FORMATS", FbDbType.VarChar, 1024, "FORMATS");
            command.Parameters.Add("@RANGE", FbDbType.VarChar, 1024, "RANGE");
            command.Parameters.Add("@BIG_LOGO", FbDbType.VarChar, 1024, "BIG_LOGO");
            command.Parameters.Add("@BUTTON_LOGO", FbDbType.VarChar, 1024, "BUTTON_LOGO");
            command.Parameters.Add("@STATE", FbDbType.VarChar, 1024, "STATE");
            command.Parameters.Add("@ID_VPS", FbDbType.VarChar, 1024, "ID_VPS");
            command.Parameters.Add("@ID_SERV_KEY", FbDbType.BigInt, 4, "ID_SERV_KEY");
            param = new FbParameter();
            param = command.Parameters.Add("@oldID_KEY", FbDbType.BigInt, 4, "ID_KEY");
            param.SourceVersion = DataRowVersion.Original;
            adapter.UpdateCommand = command;
            return adapter;
        }

 public void BaseUpdate(DataSet DataSet,string TableName)    
        {
            try
            {
                con.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка загрузки данных в базу\n", ex.ToString());
            }

            DataAdapter = new FbDataAdapter("Select * from "+TableName, con);
           
            if (TableName == "Service")
            {
                CreateServiceAdapter(DataAdapter, con);
            }
            else
            {
                CreateService1Adapter(DataAdapter, con);
            }
            DataAdapter.Fill(DataSet, TableName);
           
            try
            {
               
                DataAdapter.Update(DataSet, TableName);
                //DataSet1.AcceptChanges();
                MessageBox.Show("Данные сохранены", " Сохранение данных", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            con.Close();
            RemouteVps.Enabled = true;
        }
...
Рейтинг: 0 / 0
Сохранение данных из dataSet в БД
    #36327279
SokolNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maestro_skl,

делай такие графы а потом сверху вниз и снизу вверх по сратегии записи
...
Рейтинг: 0 / 0
Сохранение данных из dataSet в БД
    #36327350
maestro_skl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, а можно подробнее? Или ссылку?
Я недавно на шарп перешел, до этого под никсы на С++ писал.
Вообще, мне виделось, что я неправильно заполняю DataAdapter.
Сдандартный CommandBuilder здесь не подойдет, т.к. он не работает со связанными таблицами.
...
Рейтинг: 0 / 0
Сохранение данных из dataSet в БД
    #36327560
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maestro_sklСпасибо, а можно подробнее? Или ссылку?
Я недавно на шарп перешел, до этого под никсы на С++ писал.
Вообще, мне виделось, что я неправильно заполняю DataAdapter.
Сдандартный CommandBuilder здесь не подойдет, т.к. он не работает со связанными таблицами.

вам другими словами сказали, что сначала удаляются записи из зависимых таблиц и только потом у справочников, а на апдейте такое возможно если вы ключи обновляете, попробуйте сделать каскадными удаление и апдейт и посмотрите что будет.
...
Рейтинг: 0 / 0
Сохранение данных из dataSet в БД
    #36327661
maestro_skl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь, понял, спасибо.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Сохранение данных из dataSet в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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