Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Сохранение данных из dataSet в БД / 5 сообщений из 5, страница 1 из 1
23.11.2009, 09:17
    #36325082
maestro_skl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение данных из dataSet в БД
Всем, доброго времени суток. Почитал форум, понял, что подобные вопросы составляют чуть-ли не половину. Проблема в следующем: Есть две таблицы связанные отношением "один ко многим". При апдайте 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
24.11.2009, 01:48
    #36327279
SokolNik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение данных из dataSet в БД
maestro_skl,

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

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


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