SELECT w insercie

0

Witam,
Mam pewnie zapytanie:

INSERT INTO nauczyciele_przedmiotow (klasa,przedmiot) SELECT klasy.ID as 'klasa', przedmioty.ID as 'przedmiot' from klasy, przedmioty where klasy.nazwa='4tb' and przedmioty.nazwa IN ('CKP','Ekonomika przedsiębiorstw','Fizyka','Język angielski','Język angielski zawodowy','Język francuski','Język niemiecki','Język polski','Matematyka','Oprogramowanie biurowe','Religia / etyka','Systemy baz danych','Tworzenie stron WWW i aplikacji internetowych','Wychowanie fizyczne','Zajęcia z wychowawcą','Historia i społeczeństwo')

Otóż wszystko działa fajnie ale nie dodaje przedmiotu "Historia i społeczeństwo" nie mam pojęcia dlaczego, wszystko fajnie śmiga.
klasa oraz przedmiot w tabeli nauczyciele_przedmiotow to klucze obce odpowiednio klucze podstawowe w tabeli klasy i przedmioty

Zapytania używam w C#(WPF) przy dodawaniu przedmiotów z ListBoxu

0

Czy w tabeli Przedmioty na pewno istnieje nazwa 'Historia i społeczeństwo' ? Nie ma tam literówki może ?

0

Z tego co dodałeś wynika że nie ma siły musi się dodać.
Wrzuć w jaki sposób to dodajesz bo sam insert nic nie mówi. A jakiś błąd cokolwiek?

0

A N'Historia i społeczeństwo' tez nie pójdzie ?

0

A sam select zwraca "Historia i społeczeństwo" ?

0
        private void button2_Click(object sender, RoutedEventArgs e)
        {
            Loading_Dialog ld = new Loading_Dialog();
            try
                {
                
                ld = new Loading_Dialog("Trwa modyfikowanie przedmiotów dla danej klasy");
                ld.Owner = this;
                ld.Show();


                Console.WriteLine(mysql_connection.State);
                if (mysql_connection.State == ConnectionState.Closed) mysql_connection.Open();
                MySqlCommand cmd = new MySqlCommand("DELETE FROM nauczyciele_przedmiotow WHERE klasa=(SELECT ID from klasy where nazwa=@klasa)", mysql_connection);
                cmd.Parameters.AddWithValue("@klasa", klasa_przedmioty.SelectedValue.ToString());
                cmd.ExecuteNonQuery();


                string zapytanie = "";

                for (int i = 0; i < przedmioty.SelectedItems.Count; i++)
                {
                    string wybrane_przedmioty = przedmioty.SelectedItems[i].ToString();
                    string wybrany_przedmiot = wybrane_przedmioty.TrimEnd('\r', '\n');
                    zapytanie = zapytanie + String.Format(
                        "{0}'{1}'",
                        (i == 0) ? "" : ",",
                        (wybrany_przedmiot=="Historia i społeczeństwo") ? "%Historia i społeczeństwo%" : wybrany_przedmiot
                        );
                }

                    MySQL.edit_class_subjects(zapytanie, klasa_przedmioty.SelectedValue.ToString());
                Loading_Dialog.CloseWindow(ld);
            }
            catch (MySqlException ex)
            {
                switch (ex.Number)
                {
                    case 0:
                        MessageBox.Show("Cannot connect to server. Contact administrator");
                        Loading_Dialog.CloseWindow(ld);
                        break;
                    case 1045:
                        MessageBox.Show("Invalid username/password, please try again");
                        Loading_Dialog.CloseWindow(ld);
                        break;
                     
                }
                MessageBox.Show(ex.Message);
                
            }
            finally
            {
                if (mysql_connection.State == ConnectionState.Open)
                {

                    mysql_connection.Close();
                    Loading_Dialog.CloseWindow(ld);
                }
            }
        }
        public static bool edit_class_subjects(string data, string klasa)
        {
            try
            {

                if (mysql_connection.State == ConnectionState.Closed) mysql_connection.Open();
                string abc = String.Format("INSERT INTO nauczyciele_przedmiotow (klasa,przedmiot) SELECT klasy.ID as 'klasa', przedmioty.ID as 'przedmiot' from klasy, przedmioty where klasy.nazwa='{0}' and przedmioty.nazwa IN ({1})",klasa,data);
                MySqlCommand cmd = new MySqlCommand(abc, mysql_connection);
                Console.WriteLine(abc);
                int RowsAffected = cmd.ExecuteNonQuery();

                if (RowsAffected > 0)
                    return true;
                return false;
            }
            catch (Exception ex)
            {
                HandleExceptions.GetErrors(ex);
                return false;
            }
            finally
            {
                if (mysql_connection.State == ConnectionState.Open)
                    mysql_connection.Close();
            }
        }

user image

Wybaczcie że taki długi post ale nie znalazłem znacznika spoiler czy coś w tym stylu.

0

Można zamknąć, problemem było kodowanie, wystarczyło dodać do mysql connectora "character set=utf8", dzieki za pomoc anyway :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1