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
JOF
Tvůrce
Avatar
JOF:26.12.2013 23:16

Ahoj,
já bych jen doplnil pro ty, kteří projíždí tento seriál postupně,
že tento díl moc nenavazuje na předchozí, neboť se jedná o tzv.
připojenou aplikaci (viz 3. díl tohoto seriálu), kdežto minulý díl pojednával o odpojeném přístupu. Pokud byste chtěli provádět
vkládání, editaci nebo mazání záznamů u odpojených aplikací, měli byste to dělat v DataSetu (popř. DataTable) a změny propagovat do databáze třeba později s pomocí DataAdapteru. Bude o tom také nějaký díl?

Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na JOF
David Hartinger:9.1.2014 18:23

Ahoj, určitě zde budu o databázích ještě něco psát, chtěl jsem zatím uvést alespoň základy, je pravda, že jsme tyto 2 přístupy propojil. Všiml jsem si tvých konstruktivních reakcí již u několika mých článků. Nechtěl bych o odpojená vs. připojená aplikace napsat nějaký článeček s příklady? Když tak mi napiš do zpráv :)

Editované
Odpovedať
New kid back on the block with a R.I.P
Avatar
Maros2470
Člen
Avatar
Maros2470:26.4.2014 22:57

Ahoj, pokračuji s učením práce s databází a zkouším propojení kontrolek ve form s databází. Načtení do listBox, comboBox a pod jsem zvládl a také přidání dat do tabulky databáze přes kontrolky. Narazil jsem však na problém. Po vyselektování řádku dataGrid do texBoxů, chci tento obsah textBoxů použít pro výmaz, či úoravy dat v tabulce databáze, ale změny se neprojeví. Kde jsem udělal chybu? Napsal jsem to takto:

string connectionString = @"Data Source=PCMAREK\E­li;Initial Catalog=Eli-elektro;Integrated Security=True";
using (SqlConnection pripojeni = new SqlConnection(con­nectionString))
{
pripojeni.Open();
string id = idTextBox.Text;
string banka = bankaTextBox.Text;
string kod = kodTextBox.Text;

string dotaz = "UPDATE Banky SET Banka=@banka, Kod=@kod WHERE ID=@id";

using (SqlCommand sqlDotaz = new SqlCommand(dotaz, pripojeni))
{

sqlDotaz.Para­meters.AddWit­hValue("@banka", banka);
sqlDotaz.Para­meters.AddWit­hValue("@kod", kod);

}

}

Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovedá na Maros2470
Jan Vargovský:27.4.2014 0:18

Nikde nevidím nic, že by jsi ten command spouštěl. Btw, pro vložení kódu je tu tlačítko.

Avatar
Maros2470
Člen
Avatar
Odpovedá na Jan Vargovský
Maros2470:27.4.2014 6:05

Tlačítko tam samozřejmě mám.

Avatar
Odpovedá na Maros2470
Michal Štěpánek:27.4.2014 6:07

Tlačítko máš, ale nepoužíváš.
Dotaz máš taky, ale nespustils ho...
Musíš tam mít taky něco jako ExecuteNonQuery (např.)

dotaz.ExecuteNonQuery();
Editované
Odpovedať
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovedá na Maros2470
Michal Štěpánek:27.4.2014 6:13

... a nevidim tam parametr pro ID

Odpovedať
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Maros2470
Člen
Avatar
Odpovedá na Michal Štěpánek
Maros2470:27.4.2014 8:37

Tlačítko používám, jen jsem ho tady nedal. To ID jsem tam nenapsal, to už jsem si všiml. Každopádně díky

Avatar
Maros2470
Člen
Avatar
Odpovedá na Michal Štěpánek
Maros2470:27.4.2014 10:15

Při ukládání dat mi funguje vše normálně, mám to napdané takto.

private void ulozButton_Clic­k(object sender, EventArgs e)
{

string connectionString = @"Data Source=PCMAREK\E­li;Initial Catalog=Eli-elektro;Integrated Security=True";
using (SqlConnection pripojeni = new SqlConnection(con­nectionString))
{
pripojeni.Open();

string banka = bankaTextBox.Text;
string kod = kodTextBox.Text;

string dotaz = "INSERT INTO Banky (Banka, Kod) VALUES (@banka, @kod)";
using (SqlCommand sqlDotaz = new SqlCommand(dotaz, pripojeni))
{
sqlDotaz.Para­meters.AddWit­hValue("@banka", banka);
sqlDotaz.Para­meters.AddWit­hValue("@kod", kod);
sqlDotaz.Execu­teNonQuery();

}

}

}

ale při mazání dat mi to háže chybu: incorrect syntax near ','.

Mám to napsané takto:

private void vymazButton_Clic­k(object sender, EventArgs e)
{
string connectionString = @"Data Source=PCMAREK\E­li;Initial Catalog=Eli-elektro;Integrated Security=True";
using (SqlConnection pripojeni = new SqlConnection(con­nectionString))
{
pripojeni.Open();
string id = idTextBox.Text;
string banka = bankaTextBox.Text;
string kod = kodTextBox.Text;

string dotaz = "DELETE FROM Banky WHERE ID=@id, Banka=@banka, kod=@kod";

using (SqlCommand sqlDotaz = new SqlCommand(dotaz, pripojeni))
{
sqlDotaz.Para­meters.AddWit­hValue("@id", id);
sqlDotaz.Para­meters.AddWit­hValue("@banka", banka);
sqlDotaz.Para­meters.AddWit­hValue("@kod", kod);
sqlDotaz.Execu­teNonQuery();

}

}

}

Avatar
Odpovedá na Maros2470
Michal Štěpánek:27.4.2014 10:29
  1. zase to tlačítko CODE, bez toho je to nepřehledný...
  2. myslím si, že u toho delete máš zbytečně ty další parametry. ID je přece jedinečné, takže k mazání konkrétního záznamu to stačí. A když už používáš více parametrů u WHERE, tak je musíš nějak spojit, tzn, buď AND nebo OR, NE čárkou. např.:
string dotaz = "DELETE FROM Banky WHERE ID=@id AND Banka=@banka AND kod=@kod";

Nicméně k úpravám a mazání se za WHERE dává většinou jen IDčko, protože to je jasný identifikátor záznamu.

Editované
Odpovedať
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
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.