Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 6. diel - Databázy v C# .NET - INSERT, UPDATE, DELETE a COUNT

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
mkub
Tvůrce
Avatar
Odpovedá 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...

Avatar
Odpovedá 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).

Odpovedať
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);
            }
        }
Avatar
Luboš
Člen
Avatar
Luboš:23.12.2015 21:34

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

Avatar
Odpovedá na Luboš
Štefan Pružinský:23.12.2015 21:36

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

Odpovedať
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.

Editované
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);
            }
Editované
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovedá na 1.pavel.franta
Jan Vargovský:10.1.2016 23:12

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

Avatar
Odpovedá 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á ?

Avatar
Odpovedá 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

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 59.