Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2014, 14:58   #1
Rino256
Новичок
Джуниор
 
Регистрация: 24.05.2014
Сообщений: 2
Восклицание MySQL+ WinForm C#

Здравствуйте! ПРоблема такая: при добавлении информации в таблицу OrdersGoodsDetails вылетает ошибка:
Код:
Cannot add or update a child row: a foreign key constraint fails (`warehouse`.`ordersgoodsdetails`, CONSTRAINT `ordersgoodsdetails_ibfk_1` FOREIGN KEY (`OrdersID`) REFERENCES `orders` (`OrdersID`))
Причем в Orders данные спокойно вписываются. В OrdersGoodsDetails есть поле OrdersID, которое является внешним ключом поля OrdersID в Orders

Код таблицы Orders:
Код:
CREATE TABLE IF NOT EXISTS `orders` (
  `OrdersID` int(11) NOT NULL AUTO_INCREMENT,
  `OrdersClientsName` varchar(15) NOT NULL,
  `OrdersDate` varchar(20) NOT NULL,
  `OrdersDriverName` varchar(20) NOT NULL,
  `OrdersCarModel` varchar(20) NOT NULL,
  `OrdersCarKey` varchar(10) NOT NULL,
  `OrdersTotalPrice` double NOT NULL,
  PRIMARY KEY (`OrdersID`),
  KEY `DriverID` (`OrdersDriverName`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
Код OrdersGoodsDetails:
Код:
CREATE TABLE IF NOT EXISTS `ordersgoodsdetails` (
  `OrdersGoodsDetailsID` int(11) NOT NULL AUTO_INCREMENT,
  `OrdersID` int(11) NOT NULL,
  `OrdersGoodsDetails_GoodsName` varchar(15) NOT NULL,
  `OrdersGoodsDetails_GoodsPrice` double NOT NULL,
  `OrdersGoodsDetails_GoodsCount` int(11) NOT NULL,
  `OrdersGoodsDetails_GoodsTotalPrice` double NOT NULL,
  PRIMARY KEY (`OrdersGoodsDetailsID`),
  KEY `OrdersID` (`OrdersID`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

ALTER TABLE `ordersgoodsdetails`
  ADD CONSTRAINT `ordersgoodsdetails_ibfk_1` FOREIGN KEY (`OrdersID`) REFERENCES `orders` (`OrdersID`);
Код C#, где вносятся данные:
Код:
this.DBConnect();
            this.OpenConnect();
            for (int i = 0; i < dt.RowCount - 1; i++)
            {
                double price = Convert.ToDouble(dt.Rows[i].Cells[1].Value.ToString());
                int count = Convert.ToInt32(dt.Rows[i].Cells[2].Value.ToString());
                double goods_total_price = Convert.ToDouble(dt.Rows[i].Cells[3].Value.ToString());
                //querry = "INSERT INTO OrdersGoodsDetails(OrdersGoodsDetails_GoodsName, OrdersGoodsDetails_GoodsPrice,OrdersGoodsDetails_GoodsCount, OrdersGoodsDetails_GoodsTotalPrice, OrdersGoodsDetails_Date)" + "VALUES('"+ dt.Rows[i].Cells[0].Value.ToString() + "','" + price + "','" + count + "','"+goods_total_price+"','"+Date+"');";
                string querry = "INSERT INTO OrdersGoodsDetails(OrdersGoodsDetails_GoodsName, OrdersGoodsDetails_GoodsPrice,OrdersGoodsDetails_GoodsCount, OrdersGoodsDetails_GoodsTotalPrice)" + "VALUES('" + dt.Rows[i].Cells[0].Value.ToString() + "','" + price + "','" + count + "','" + goods_total_price + "');";
                this.cmd = new MySqlCommand(querry, this.connection);
                this.cmd.ExecuteNonQuery();
            }
            this.CloseConnect();
Помогите пожалуйста с этой проблемой! Заранее спасибо!
Изображения
Тип файла: jpg tables.jpg (18.3 Кб, 118 просмотров)
Rino256 вне форума Ответить с цитированием
Старый 24.05.2014, 15:22   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А что не понятного? Если есть внешний NOT NULL ключ, то при вставке он должен быть заполнен и корректно. Не вижу присвоение чего-либо в него. На автомате туда ничего не попадет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.05.2014, 16:16   #3
Rino256
Новичок
Джуниор
 
Регистрация: 24.05.2014
Сообщений: 2
По умолчанию

Спасибо большое за помощь! Еще вопрос: а есть ли способ сделать так, что когда устанавливается значение в Orders.OrdersID это же значение автоматически устанавливалось и в OrdersGoodsDetails.OrdersID?
Rino256 вне форума Ответить с цитированием
Старый 24.05.2014, 16:21   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А хорошо подумать - в какую запись OrdersGoodsDetails? Разве что в триггере на вставку в Orders создавать запись в OrdersGoodsDetails
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
winform app timeout c++ Holmes48 Visual C++ 0 30.03.2014 11:08
C# Winform ListView Reskov C# (си шарп) 2 24.09.2012 13:58
WinForm в dll mintan Visual C++ 18 30.07.2012 22:12
подключение БД к winform c++ Nitrino Visual C++ 0 16.04.2011 02:10
C# события ,WinForm bondik Общие вопросы .NET 4 08.02.2010 20:24