Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.147.28.202] |
|
Сообщ.
#1
,
|
|
|
Привет всем.. Вот на старом проекте код этот работал без проблем, а тут хоть убейся не хочет:( Мож ктото объяснит в чем же дело? Первый проект использовал за БД Аксесс, а данный проект МсСкуль 2005...
string con_str = "Data Source=SERVER;Initial Catalog=AlexShop;Integrated Security=True"; SqlConnection oc = new SqlConnection(con_str); oc.Open(); string mySQLStr; mySQLStr = "SELECT Count(Administrator.[Kod_admina]) AS [Kod_admina] FROM Administrator WHERE (((Administrator.[Kod_admina])='" + textBox8.Text + "'));"; SqlCommand comm = new SqlCommand(mySQLStr, oc); SqlDataReader myReader = comm.ExecuteReader(CommandBehavior.SingleResult); myReader.Read(); if ((int)myReader[0] != 0) { if (MessageBox.Show("Вы действительно хотите удалить этого администратора?", "Внимание!", MessageBoxButtons.OKCancel) == DialogResult.OK) { mySQLStr = "DELETE *FROM Administrator WHERE (((Administrator.[Kod_admina])='" + textBox8.Text + "'));"; comm = new SqlCommand(mySQLStr, oc); comm.ExecuteScalar(); } } else { MessageBox.Show("Таких записей не существует!!!", "Внимание!", MessageBoxButtons.OK); } oc.Close(); Вот так создавал таблицу: create table Administrator (Kod_admina int identity(1,1) primary key, FIO varchar(20), Telefon varchar(7), E_mail varchar(21), ICQ varchar(9), Login varchar(10), PWD varchar(15), Data_sozdaniya datetime, Connect_stat tinyint not null) |
Сообщ.
#2
,
|
|
|
Неплохо было бы сказать, что именно означает "хоть убейся не хочет". Ошибка компиляции, исполнения, базы данных? Код исполняется, но ничего не происходит?
Я бы сменил екраниропвку в sql коде. Б мускуле используются не прямые скобки, а косые кавычки. Добавлено Звездочка не нужна : DELETE FROM Administrator ... |
Сообщ.
#3
,
|
|
|
Цитата MIF @ Неплохо было бы сказать, что именно означает "хоть убейся не хочет". Ошибка компиляции, исполнения, базы данных? Код исполняется, но ничего не происходит? Я бы сменил екраниропвку в sql коде. Б мускуле используются не прямые скобки, а косые кавычки. Добавлено Звездочка не нужна : DELETE FROM Administrator ... Спс именно DELETE FROM Administrator ... то что и нада))) Вот возникла новая проблемка, оказывается у меня с табилцей админ связана таблица СМС тоесть сообщения, в которой хранятся сообщения от простых пользователей... Вот при удалении админа нада автоматически подхватывать удаление и всех СМС которые ему пренадлежат: string con_str = "Data Source=swordfish\\tetris;Initial Catalog=AlexShop;Integrated Security=True"; SqlConnection oc = new SqlConnection(con_str); oc.Open(); string mySQLStr; mySQLStr = "SELECT Count(Administrator.[Kod_admina]) AS [Kod_admina] FROM Administrator WHERE (((Administrator.[Kod_admina])='" + textBox8.Text + "'));" + "SELECT Count(SMS.[Kod_admina]) AS [Kod_admina] FROM SMS WHERE (((SMS.[Kod_admina])='" + textBox8.Text + "'))"; SqlCommand comm = new SqlCommand(mySQLStr, oc); SqlDataReader myReader = comm.ExecuteReader(CommandBehavior.SingleResult); myReader.Read(); if (MessageBox.Show("Вы действительно хотите удалить этого администратора?", "Внимание!", MessageBoxButtons.OKCancel) == DialogResult.OK) { mySQLStr = "DELETE FROM Administrator WHERE (((Administrator.[Kod_admina])='" + textBox8.Text + "'));" + "DELETE FROM SMS WHERE (((SMS.[Kod_admina])='" + textBox8.Text + "'))"; comm = new SqlCommand(mySQLStr, oc); myReader.Close(); comm.ExecuteScalar(); } oc.Close(); СМС удаляются а вот админ остается:( Что опять я напортачил в запросе с выборкой и удалением??? Таблици: create table Administrator (Kod_admina int identity(1,1) primary key, FIO varchar(20), Telefon varchar(7), E_mail varchar(21), ICQ varchar(9), Login varchar(10), PWD varchar(15), Data_sozdaniya datetime, Connect_stat tinyint not null) create table SMS (Kod_sms int identity(1,1) primary key, Ot_kogo_sms varchar(10), Tekst_sms varchar(125), Kod_admina int references Administrator(Kod_admina)) |
Сообщ.
#4
,
|
|
|
Попробуй поставить первым запрос DELETE FROM SMS, а потом уже удалять админа, чтоб не нарушать целостность. А вообще, лучше поробовать настроить в MySQL каскадное удаление записей для связи Administrator-SMS, если мускул умеет, конечно.
|
Сообщ.
#5
,
|
|
|
string con_str = "Data Source=swordfish\\tetris;Initial Catalog=AlexShop;Integrated Security=True"; SqlConnection oc = new SqlConnection(con_str); oc.Open(); string mySQLStr; mySQLStr = "SELECT Count(SMS.[Kod_admina]) AS [Kod_admina] FROM SMS WHERE (((SMS.[Kod_admina])='" + textBox8.Text + "'));" + "SELECT Count(Administrator.[Kod_admina]) AS [Kod_admina] FROM Administrator WHERE (((Administrator.[Kod_admina])='" + textBox8.Text + "'))"; SqlCommand comm = new SqlCommand(mySQLStr, oc); SqlDataReader myReader = comm.ExecuteReader(CommandBehavior.SingleResult); myReader.Read(); if (MessageBox.Show("Вы действительно хотите удалить этого администратора?", "Внимание!", MessageBoxButtons.OKCancel) == DialogResult.OK) { mySQLStr = "DELETE FROM SMS WHERE (((SMS.[Kod_admina])='" + textBox8.Text + "'));" + "DELETE FROM Administrator WHERE (((Administrator.[Kod_admina])='" + textBox8.Text + "'))"; comm = new SqlCommand(mySQLStr, oc); myReader.Close(); comm.ExecuteScalar(); } oc.Close(); Ура так пашет...Спс всем за помощ)) |
Сообщ.
#6
,
|
|
|
Блин чем далее продвигаюсь тем сложнее Щяс нада написать тройной запрос.
Таблици: create table Postavshiki (Kod_postavshika int identity(1,1) primary key, Nazvanie_postavshika varchar(10), Predstavitel_FIO varchar(20), Adress varchar(15), Telefon varchar(15), Web_sait varchar(10), E_mail varchar(21), Skidka int, Login varchar(10), PWD varchar(15), Data_sozdaniya datetime, Connect_stat tinyint not null) create table Tovari (Kod_tovara int identity(1,1) primary key, Kod_proizvod int references Proizvoditeli(Kod_proizvod), Kod_postavshika int references Postavshiki(Kod_postavshika), Naimenovanie_tovara varchar(20), Model varchar(20), Opisanie varchar(20), Nali4ie bit, Data_postavki datetime, Cena_postavki int, Data_Prodaji datetime, Cena_prodaji int, Garantiya int) create table Kategory (Nomer_kategory int identity(1,1) primary key, Nazvanie_kategory varchar(10), Kod_tovara int references Tovari(Kod_tovara)) Суть проблемы такова. Нада удалить выбраного поставщика с его товарами, но, у меня ж товары связаны с категорией, тобишь нада начинать с категории удалять....сначала с категории удаляем нужные строки потом с товаров и наконец удаляем самого поставщика...Вот тройной запрос я неприложу ума как построить, двойной с горем пополам и с вашей помощю получился... Вот код: string con_str = "Data Source=swordfish\\tetris;Initial Catalog=AlexShop;Integrated Security=True"; SqlConnection oc = new SqlConnection(con_str); oc.Open(); string mySQLStr; mySQLStr = "SELECT Count(Kategory.[Kod_tovara]) AS [Kod_tovara] FROM Kategory WHERE (((Kategory.[Kod_tovara])='" + textBox19.Text + "'));" + "SELECT Count(Tovari.[Kod_postavshika]) AS [Kod_postavshika] FROM Tovari WHERE (((Tovari.[Kod_postavshika])='" + textBox19.Text + "'));" + "SELECT Count(Postavshiki.[Kod_postavshika]) AS [Kod_postavshika] FROM Postavshiki WHERE (((Postavshiki.[Kod_postavshika])='" + textBox19.Text + "'))"; SqlCommand comm = new SqlCommand(mySQLStr, oc); SqlDataReader myReader = comm.ExecuteReader(CommandBehavior.SingleResult); myReader.Read(); if (MessageBox.Show("Вы действительно хотите удалить этого поставщика?", "Внимание!", MessageBoxButtons.OKCancel) == DialogResult.OK) { mySQLStr = "DELETE FROM Kategory WHERE (((Kategory.[Kod_tovara])='" + textBox19.Text + "'));" + "DELETE FROM Tovari WHERE (((Tovari.[Kod_postavshika])='" + textBox19.Text + "'));" + "DELETE FROM Postavshiki WHERE (((Postavshiki.[Kod_postavshika])='" + textBox19.Text + "'))"; comm = new SqlCommand(mySQLStr, oc); myReader.Close(); comm.ExecuteScalar(); } oc.Close(); Админ вводит в текстбокс19 лишь код поставщика и все относившиеся данные к нему с двух таблиц удаляются....Без категории отлично удаляется все, но мне категория нужна...Помогите пож разобратся... |
Сообщ.
#7
,
|
|
|
Непонятно, почему в таблице категорий внешний ключ на код товара? Как бы обычно товар относится к какой-либо категории, а не наоборот.
|
Сообщ.
#8
,
|
|
|
Цитата wdk @ Непонятно, почему в таблице категорий внешний ключ на код товара? Как бы обычно товар относится к какой-либо категории, а не наоборот. create table Tovari (Kod_tovara int identity(1,1) primary key, Nomer_kategory int references Kategory(Nomer_kategory), Kod_proizvod int references Proizvoditeli(Kod_proizvod), Kod_postavshika int references Postavshiki(Kod_postavshika), Naimenovanie_tovara varchar(20), Model varchar(20), Opisanie varchar(20), Nali4ie bit, Data_postavki datetime, Cena_postavki int, Data_Prodaji datetime, Cena_prodaji int, Garantiya int) create table Kategory (Nomer_kategory int identity(1,1) primary key, Nazvanie_kategory varchar(10)) Тоесть так?) Я уже с этими созданиями таблиц и запросами заморочился, вот и проявляется рассеянность моя:) Если это так как я показал, то хватит 2-х запросов, что были приведены в коде выше:) |