2015-08-25 6 views
1

Мне нужна помощь по этой проблеме. Существует проблема, но я не мог найти егоmysql ошибка внешнего ключа

сообщение об ошибке

Невозможно добавить или обновить дочернюю строку:. Ограничение внешнего ключа не удается (db_kiosktbl_oyunhareketi, скованность OH_KioskID FOREIGN KEY (OH_KioskID) ЛИТЕРАТУРА tbl_kiosk (Kiosk_ID) НА УДАЛИТЬ нЕТ ДЕЙСТВИЯ ON UPDATE никаких действий)

Вот мой код C#

string sql = "insert into db_kiosk.tbl_oyunhareketi (OH_OyuncuID,OH_KioskID,OH_Puan,OH_Tarih,OH_ControlRow) values ('"+Convert.ToInt32(Label4.Text)+"','"+Convert.ToInt32(Label3.Text)+"','" + Puan_txt.Text + "' , '" + Tarih_txt.Text + "',1)"; 

Label3.Text = Kiosk_Drop.SelectedValue; 

Label4.Text = Oyuncu_Drop.SelectedValue; 

Kiosk_Drop и Oyuncu_Drop являются DropDownList в ASP.net, и они находятся в функции selectedIndexChanged. Когда я показываю метки, значения идут правильно, но проблема заключается в вставке. DB атрибуты также integer, но я не мог найти проблему.

+0

Этот запрос широко открыт для SQL-инъекций. –

+0

@Oykun, прочитайте [this] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) относительно SQL-инъекций – vhu

ответ

1

У вас есть ограничение внешнего ключа, которое мешает вам добавлять строки в дочернюю таблицу, прежде чем вы получите соответствующую информацию в родительской таблице.

В этом случае вы должны сначала заполнить tbl_kiosk перед добавлением строки в tbl_oyunhareketi. Строки сопоставляются столбцами OH_KioskID и Kiosk_ID.

+0

tbl_kiosk уже заселен в системе, я создал запрос внутри Workbench Mysql. Принимаются значения из tbl_kiosk, но в разделе кода он не работает. – OykunYenal

+0

Можете ли вы показать содержимое переменной 'sql' после, так, чтобы оно показывало, как расширяются« Convert.ToInt32 (Label3.Text) »и другие переменные. – vhu

+0

Сообщение об ошибке означает, что результат 'Convert.ToInt32 (Label3.Text)' не существует как значение в столбце 'Kiosk_ID'' tbl_kiosk'. – vhu

Смежные вопросы