IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

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

 
Odpovedať
26.12.2013 23:16
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é 9.1.2014 18:24
Odpovedať
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);

}

}

 
Odpovedať
26.4.2014 22:57
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.

 
Odpovedať
27.4.2014 0:18
Avatar
Maros2470
Člen
Avatar
Odpovedá na Jan Vargovský
Maros2470:27.4.2014 6:05

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

 
Odpovedať
27.4.2014 6:05
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é 27.4.2014 6:09
Odpovedať
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
Odpovedá na Maros2470
Michal Štěpánek:27.4.2014 6:13

... a nevidim tam parametr pro ID

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

 
Odpovedať
27.4.2014 8:37
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();

}

}

}

 
Odpovedať
27.4.2014 10:15
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é 27.4.2014 10:32
Odpovedať
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...
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.

Zatiaľ nikto nevložil komentár - buď prvý!