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
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?

 
Odpovědět
26.12.2013 23:16
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá 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 :)

Editováno 9.1.2014 18:24
Odpovědět
9.1.2014 18:23
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);

}

}

 
Odpovědět
26.4.2014 22:57
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá 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.

 
Odpovědět
27.4.2014 0:18
Avatar
Maros2470
Člen
Avatar
Odpovídá na Jan Vargovský
Maros2470:27.4.2014 6:05

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

 
Odpovědět
27.4.2014 6:05
Avatar
Odpovídá 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();
Editováno 27.4.2014 6:09
Odpovědět
27.4.2014 6:07
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Maros2470
Michal Štěpánek:27.4.2014 6:13

... a nevidim tam parametr pro ID

Odpovědět
27.4.2014 6:13
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Maros2470
Člen
Avatar
Odpovídá 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

 
Odpovědět
27.4.2014 8:37
Avatar
Maros2470
Člen
Avatar
Odpovídá 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();

}

}

}

 
Odpovědět
27.4.2014 10:15
Avatar
Odpovídá 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.

Editováno 27.4.2014 10:32
Odpovědět
27.4.2014 10:29
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
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.