MySQL i C#

0

hej ;)
Chciałabym wykonywać zapytania do bazy tworzące tabele, a później pobierające dane z tabeli.
Udało mi się połączyć ze samą bazą danych, jednak nie potrafię wykonać zapytania - nie wiem co robię źle ;(

private void button1_Click(object sender, EventArgs e)
        {
            MySqlConnection polaczenie = new MySqlConnection();

            try
            {
                polaczenie.ConnectionString = "Server = < tajne ;) >;  Database = sharp_nauka; Uid = sharp_nauka; Pwd = cYHelqO5;";
                polaczenie.Open();
            }

            catch (SqlException se)
            {
                MessageBox.Show(se.StackTrace, se.State.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error);
            }


            if (polaczenie.State == ConnectionState.Open)
                MessageBox.Show("udalo sie!");

            
            string query = "USE sharp_nauka;CREATE TABLE example (id INT, data VARCHAR(100));";
            MySqlDataAdapter adapter = new MySqlDataAdapter(query, polaczenie);
            polaczenie.Close();

        }
 
2

Po prostu nie wykonujesz nigdy swojego polecenia. Adaptery służą do czytania danych, nie do tworzenia tabel. Tak na oko, to powinnaś użyć czegoś takiego:

MySqlCommand msc = new MySqlCommand(query, polaczenie);
msc.ExecuteNonQuery();
0

dzięki działa :) a powiesz mi jeszcze tylko, co zrobić, aby wynik zapytania select przypisać do stringa?

1

Do zmiennej typu string to może być lipa, bo zapytanie może zwrócić więcej niż jeden wynik, nawet z super hiper warunkami selekcji ( no chyba, że lecisz po kluczu podstawowym ) więc najlepiej wyniki dodawać do listy i potem wypisywać forech-em lub innym czymś. Zależy czego oczekujesz.

Edit: Polecam Simple Data.

1
marta1995 napisał(a):

dzięki działa :) a powiesz mi jeszcze tylko, co zrobić, aby wynik zapytania select przypisać do stringa?

Jak chcesz robić selecty, to użyj lepiej SqlReadera.

0

dziękuje Panowie ;)

0
Ciekawski napisał(a):

bo zapytanie może zwrócić więcej niż jeden wynik, nawet z super hiper warunkami selekcji .
Wykonałeś w życiu choć raz zapytanie SQL z klauzulą LIMIT 1 .... chyba nie skoro takie bzdury piszesz!

0

@Ledwo się zarejestrowałeś a już kozaczysz, pokory kogucie.
Nie wiedziałem, że data rejestracji na forum jest wyznacznikiem wiedzy na dany temat. Brak słów.

@ Limit jest dobry dla stronicowania, ale to czy chcemy tylko jeden rekord czy sto, to już inna sprawa.
Wiec gorąco polecam kursy SQL dla początkujących i przyswojenie sobie zasad działania i zastosowania klauzuli LIMIT...
EOT ...

0
NewUserCsharp napisał(a):
Ciekawski napisał(a):

bo zapytanie może zwrócić więcej niż jeden wynik, nawet z super hiper warunkami selekcji .
Wykonałeś w życiu choć raz zapytanie SQL z klauzulą LIMIT 1 .... chyba nie skoro takie bzdury piszesz!

Faktycznie bzdury, bo select nie "może" lecz zawsze zwraca zbiór rekordów.

0
somekind napisał(a):

Faktycznie bzdury, bo select nie "może" lecz zawsze zwraca zbiór rekordów.
Tak samo jak by napisać, że funkcja: nie "może" lecz zawsze zwraca zbiór" wyników... :) Sprawą oczywistą jest, że zapytanie może zwrócić więcej niż jeden rekord, ale jak oczekuje tylko jednego stosuje się właśnie klauzule LIMIT bez potrzeby uciekania sie do iteracji przez zbiory wyników. Mając na uwadze "nawet z super hiper warunkami selekcji" miałem właśnie prawidłowe zapytanie.

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