NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 6 - Databáze v C# .NET - INSERT, UPDATE, DELETE a COUNT

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
mkub
Tvůrce
Avatar
Odpovídá na Michal Štěpánek
mkub:28.11.2014 15:59

to snad nie je pravda! ako databazu pouzit MS ACCESS? Access sice je soft s prvkami databazy, ale na realne nasadenie sa nehodi - ma strasne mizerny vykon, hlavne pri vacsom mnozstve zaznamov...

 
Odpovědět
28.11.2014 15:59
Avatar
Odpovídá na mkub
Michal Štěpánek:28.11.2014 17:41

Však jsem psal, že to záleží na množství dat. Ale do 10000 záznamů to s MDB databází běhá naprosto v pohodě (mám to na vlastní kůži odzkoušeno).

Odpovědět
28.11.2014 17:41
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Luboš
Člen
Avatar
Luboš:23.12.2015 20:13

Ahoj, mám problém. Vytvořil jsem si databázi ve VS. Jde mi z ní číst, ale nejde mi do ní zapisovat. Nevíte někdo čím by to mohlo být? Nic to nehlásí. Zmáčknu tlačítko, vypíše to "1", ale když dám pravým tlačítkem na databázi a "show table data" nic se tam nezměnilo.

private void button1_Click(object sender, EventArgs e)
        {
            string anglicky = "hello", cesky = "ahoj";
            string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\TestDatabaze.mdf;Integrated Security=True";
            using (SqlConnection pripojeni = new SqlConnection(connectionString))
            {
                pripojeni.Open();
                string dotaz = @"INSERT INTO [Word] (English, Czech) VALUES (@anglicky, @cesky)";
                using (SqlCommand sqlDotaz = new SqlCommand(dotaz, pripojeni))
                {
                    sqlDotaz.Parameters.AddWithValue("@anglicky", anglicky);
                    sqlDotaz.Parameters.AddWithValue("@cesky", cesky);
                    int radku = sqlDotaz.ExecuteNonQuery();
                    Console.WriteLine(radku);
                }
            }
        }

Čtení funguje normálně.

private void button2_Click(object sender, EventArgs e)
        {
            string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\TestDatabaze.mdf;Integrated Security=True";
            using (SqlConnection pripojeni = new SqlConnection(connectionString))
            {
                pripojeni.Open();
                SqlCommand prikaz = new SqlCommand();
                prikaz.Connection = pripojeni;
                prikaz.CommandText = "SELECT COUNT(*) FROM Word";
                int pocetSlovicek = (int)prikaz.ExecuteScalar();  // metoda vrací typ object - je potřeba převést na int
                pripojeni.Close();
                Console.WriteLine("Počet slovicek v DB je {0}", pocetSlovicek);
            }
        }
 
Odpovědět
23.12.2015 20:13
Avatar
Luboš
Člen
Avatar
Luboš:23.12.2015 21:34

Nemáte někdo funkční kód s databází ve VS?

 
Odpovědět
23.12.2015 21:34
Avatar
Odpovídá na Luboš
Štefan Pružinský:23.12.2015 21:36

Skús mi poslať projekt, pozriem sa na to. :)

Odpovědět
23.12.2015 21:36
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Luboš
Člen
Avatar
Luboš:23.12.2015 22:20

Tak jsem to vyřešil. Byl problém s připojením. Díky za nabídku pomoci.

Editováno 23.12.2015 22:21
 
Odpovědět
23.12.2015 22:20
Avatar
1.pavel.franta:10.1.2016 22:55

Hned na ukázce INSERT se vkládájí slovíčka do sloupců English a Czech, ale není vyřešeno přidělení Id řádku, který používáme zároveň jako primary key a proto nemůže zůstat null.

vyřešeno takhle:

string dotaz = "INSERT INTO Slovnik (Id, English, Czech) VALUES (@Id, @anglicky, @cesky)";
SqlCommand pocetRadku = new SqlCommand("SELECT COUNT (*) FROM Slovnik", napojeniDatabaze);
    int radky = (int)pocetRadku.ExecuteScalar();
using (SqlCommand sqlDotaz = new SqlCommand(dotaz, napojeniDatabaze))
            {
                sqlDotaz.Parameters.AddWithValue("@Id", radky + 1);
                sqlDotaz.Parameters.AddWithValue("@anglicky", anglicky);
                sqlDotaz.Parameters.AddWithValue("@cesky", cesky);
                int radku = sqlDotaz.ExecuteNonQuery();
                Console.WriteLine(radku);
            }
Editováno 10.1.2016 22:57
 
Odpovědět
10.1.2016 22:55
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na 1.pavel.franta
Jan Vargovský:10.1.2016 23:12

A teď si smaž ten předposlední a zkus znova insert ;)

 
Odpovědět
10.1.2016 23:12
Avatar
Odpovídá na Jan Vargovský
1.pavel.franta:10.1.2016 23:29

:) ... pravděpodobně bych chtěl vkládat řádek s klíčem který již existuje, což by nešlo... děkuji

... v SSMS bych si nastavil klíč o jehož unikátnost se nebudu starat, ale v tomto tutorialu se o tom nebavíme, nic nenastavujeme a i přes to je tu ukázáno, že si vkládáme nové řádky, ale sloupec co nesmí zůstat prázdný tak neřešíme. Co mi uniká ?

 
Odpovědět
10.1.2016 23:29
Avatar
Odpovídá na 1.pavel.franta
1.pavel.franta:10.1.2016 23:32

... a nebo ze by sloupec Id nemusel být vyplněný, protože možná není ani primary klíčem, jak je tu vidět z náhledu jedné tabulky ? :D Někde jsem si něco nepřečetl a nebo tu funguje to "automatické přidělování klíče." :X

 
Odpovědět
10.1.2016 23:32
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 59.