Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
][irurg
175 / 174 / 38
Регистрация: 16.06.2010
Сообщений: 511
1

Ошибка при обновлении бд из dataSet

27.11.2011, 18:17. Просмотров 1015. Ответов 2
Метки нет (Все метки)

Всем привет! Делаю прогу и имею следующие грабли:
открываю справочник->предметы,
удаляю "Химия",
нажимаю "Sql Server->сохранить изменения"
и вылетает exception:
Конфликт инструкции DELETE с ограничением REFERENCE "FK_SchoolPlan_Subjects". Конфликт произошел в базе данных "SCHOOL", таблица "dbo.SchoolPlan", column 'SubjectID'.
Выполнение данной инструкции было прервано.
Не могу найти в чем причина.Может не правильно задал связи в DataSet или нужно вручную настроить
команды в DataAdapter ? Выкладываю прогу(c# 2008 express) и бд(sqlserver 2008 express).
Заранее спасибо!
1
Миниатюры
Ошибка при обновлении бд из dataSet   Ошибка при обновлении бд из dataSet  
Вложения
Тип файла: zip School.zip (128.4 Кб, 10 просмотров)
Тип файла: zip бд.zip (231.7 Кб, 9 просмотров)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 18:17
Ответы с готовыми решениями:

Ошибка при обновлении данных в БД из DataGridView при определенном условии
Собственно проблема в следующем... в приложение добавил обновление БД из dgv. Сделано по примеру,...

Ошибка при обновлении datagridview
Здравствуйте! Такая проблема! Есть datagrid. Первый раз, когда я выполняю запрос все работает...

Ошибка синтаксиса при обновлении БД
Столкнулся с проблемой обновления БД. Общий принцип обновления взят мной из ранних моих...

Ошибка при обновлении данных в БД MySQL
Доброго времени суток! Ни как не могу понять в чём ошибка, она выпадает когда данные уже введены в...

Ошибка при попытке обновлении данных таблицы Access
Есть большая таблица с данными по приборам. Она загружается в датагрид. Но при попытке сохранения...

2
][irurg
175 / 174 / 38
Регистрация: 16.06.2010
Сообщений: 511
28.11.2011, 00:35  [ТС] 2
Лучший ответ Сообщение было отмечено ][irurg как решение

Решение

Вроде разобрался. В бд с помощью sql Management studio в отношения между таблицами задал правила обновления и удаления "каскадно" и подправил код
C#
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
100
101
102
103
104
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data.Common;
using System.Data;
using System.Windows.Forms;
 
namespace School
{
    class DAL
    {
        string connectionString = @"Data Source = .\SQLExpress;Initial Catalog = School;Integrated Security = true";
 
        SqlDataAdapter subjectsDA;
        SqlDataAdapter teacherDA;
        SqlDataAdapter classesDA;
        SqlDataAdapter auditoryDA;
        SqlDataAdapter schoolPlanDA;
 
        SqlCommandBuilder subjectsCB;
        SqlCommandBuilder teacherCB;
        SqlCommandBuilder classesCB;
        SqlCommandBuilder auditoryCB;
        SqlCommandBuilder schoolPlanCB;
 
        void LoadAll()
        {            
            subjectsDA.Fill(SchoolDataSet, "Subjects");
            teacherDA.Fill(SchoolDataSet, "Teacher");
            classesDA.Fill(SchoolDataSet, "Class");
            auditoryDA.Fill(SchoolDataSet, "Auditory");
            schoolPlanDA.Fill(SchoolDataSet, "SchoolPlan");
        }
 
        public void SaveAll()
        {
            subjectsDA.Update(SchoolDataSet.Tables["Subjects"]);
            teacherDA.Update(SchoolDataSet.Tables["Teacher"]);
            classesDA.Update(SchoolDataSet.Tables["Class"]);
            auditoryDA.Update(SchoolDataSet.Tables["Auditory"]);
            schoolPlanDA.Update(SchoolDataSet.Tables["SchoolPlan"]);
        }
 
        public DataSet SchoolDataSet{get;private set;}
 
        public DAL()
        {
            SchoolDataSet = new DataSet();
 
            subjectsDA = new SqlDataAdapter("Select * From Subjects", connectionString);
            subjectsCB = new SqlCommandBuilder(subjectsDA);
             
            teacherDA = new SqlDataAdapter("Select * From Teacher", connectionString);
            teacherCB = new SqlCommandBuilder(teacherDA);
 
            classesDA = new SqlDataAdapter("Select * From Class", connectionString);
            classesCB = new SqlCommandBuilder(classesDA);
 
            auditoryDA = new SqlDataAdapter("Select * From Auditory", connectionString);
            auditoryCB = new SqlCommandBuilder(auditoryDA);
 
            schoolPlanDA = new SqlDataAdapter("Select * From SchoolPlan", connectionString);
            schoolPlanCB = new SqlCommandBuilder(schoolPlanDA);
 
            LoadAll();
 
            SchoolDataSet.Tables["Subjects"].Columns["Subject"].Unique = true;
            SchoolDataSet.Tables["Subjects"].PrimaryKey = new DataColumn[] { SchoolDataSet.Tables["Subjects"].Columns["ID"] };            
            ForeignKeyConstraint fk = new ForeignKeyConstraint("FKSubjectSchoolPlan", SchoolDataSet.Tables["Subjects"].Columns["ID"], SchoolDataSet.Tables["SchoolPlan"].Columns["SubjectID"]);
            fk.AcceptRejectRule = AcceptRejectRule.Cascade;
            fk.UpdateRule = Rule.Cascade;
            fk.DeleteRule = Rule.Cascade;
            SchoolDataSet.Tables["SchoolPlan"].Constraints.Add(fk);
            SchoolDataSet.Relations.Add(new DataRelation("SubjectSchoolPlan", SchoolDataSet.Tables["Subjects"].Columns["ID"], SchoolDataSet.Tables["SchoolPlan"].Columns["SubjectID"]));
             
 
            SchoolDataSet.Tables["Teacher"].Columns["Teacher"].Unique = true;
            SchoolDataSet.Tables["Teacher"].PrimaryKey = new DataColumn[] { SchoolDataSet.Tables["Teacher"].Columns["ID"] };
            fk = new ForeignKeyConstraint("FKTeacherSchoolPlan", SchoolDataSet.Tables["Teacher"].Columns["ID"], SchoolDataSet.Tables["SchoolPlan"].Columns["TeacherID"]);
            fk.UpdateRule = Rule.Cascade;
            fk.DeleteRule = Rule.Cascade;
            SchoolDataSet.Tables["SchoolPlan"].Constraints.Add(fk);
            SchoolDataSet.Relations.Add(new DataRelation("TeacherSchoolPlan", SchoolDataSet.Tables["Teacher"].Columns["ID"], SchoolDataSet.Tables["SchoolPlan"].Columns["TeacherID"]));
 
            SchoolDataSet.Tables["Class"].Columns["Class"].Unique = true;
            SchoolDataSet.Tables["Class"].PrimaryKey = new DataColumn[] { SchoolDataSet.Tables["Class"].Columns["ID"] };
            fk = new ForeignKeyConstraint("FKClassSchoolPlan", SchoolDataSet.Tables["Class"].Columns["ID"], SchoolDataSet.Tables["SchoolPlan"].Columns["ClassID"]);
            fk.UpdateRule = Rule.Cascade;
            fk.DeleteRule = Rule.Cascade;
            SchoolDataSet.Tables["SchoolPlan"].Constraints.Add(fk); 
            SchoolDataSet.Relations.Add(new DataRelation("ClassSchoolPlan", SchoolDataSet.Tables["Class"].Columns["ID"], SchoolDataSet.Tables["SchoolPlan"].Columns["ClassID"]));
 
            SchoolDataSet.Tables["Auditory"].Columns["Auditory"].Unique = true;
            SchoolDataSet.Tables["Auditory"].PrimaryKey = new DataColumn[] { SchoolDataSet.Tables["Auditory"].Columns["ID"] };
             
            SchoolDataSet.Tables["SchoolPlan"].PrimaryKey = new DataColumn[] { SchoolDataSet.Tables["SchoolPlan"].Columns["ID"] };
            UniqueConstraint uc = new UniqueConstraint(new DataColumn[]{SchoolDataSet.Tables["SchoolPlan"].Columns["SubjectID"], SchoolDataSet.Tables["SchoolPlan"].Columns["TeacherID"], SchoolDataSet.Tables["SchoolPlan"].Columns["ClassID"]});
            SchoolDataSet.Tables["SchoolPlan"].Constraints.Add(uc);
        
        }                   
    }
}
1
q12357
0 / 0 / 0
Регистрация: 06.07.2012
Сообщений: 2
13.01.2013, 13:06 3
Спасибо, очень помогло.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2013, 13:06

Ошибка при выборе, изменении, удалении и обновлении записей в БД
Не работают кнопки, ошибки каждой приведены ниже на скриншотах. привожу код программы и проект в...

Ошибка при обновлении : "Ошибка синтаксиса в инструкции INSERT INTO."
Ошибка при обновлении : "Ошибка синтаксиса в инструкции INSERT INTO." ...

Добавление строки в DataSet: Ошибка при указнии конкретных столбцов
Добрый вечер! такая загвоздочка: Задача кода получить список полей таблицы и засунуть его в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru