MS Office week
Pouze tento týden sleva až 80 % na e-learning týkající se MS Office
50 % bodů zdarma na online výuku díky naší Slevové akci!

Přihlášení uživatele přes MySQL databázi v C#

Jednoduchý login pomocí MySQL databáze. Určitě mnohým z vás, kteří nevědí jak na to, pomůže při práci.

Jako první hlavně přidáme reference MySQL.Data.dll.

MySqlConnection pripojeni = new MySqlConnection("Database=VAŠEDATABAZE;DataSource=HOST;UserId=UŽIVATEL;Password=HESLO");
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Zde akorát přepíšeme údaje : název databáze, hosta, uživatele a samozřejmě heslo. Takhle by to potom mohlo vypadat (pokud jste využili možnosti offline databáze pomocí localhostu) :

MySqlConnection pripojeni = new MySqlConnection("Database=Databazeuzivatelu;DataSource=localhost;UserId=root;Password=");
prikaz.CommandText = "SELECT * FROM `users`";

Je klasický SQL příkaz z jaké "sekce" chceme data číst.

while (cteni.Read())
{
    if (jmeno == cteni.GetString(1) && heslo == cteni.GetString(2))
    {
        MessageBox.Show("Připojeno");
    }
    else
    {
        // zatím nic
    }
}

Čteme z databáze GetString(1) je první sloupeček, GetString(2) je samozřejmě druhý sloupeček.

Pokud by jsme chtěli číst ID tak to je samozřejmě GetString(0), doufám že jsem aspoň někomu pomohl. :)


 

Stáhnout

Staženo 741x (40.14 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

Všechny články v sekci
Databáze v C# - ADO.NET
Článek pro vás napsal Зайчик
Avatar
Jak se ti líbí článek?
1 hlasů
Коммунизм для нашего будущего!
Aktivity (2)

 

 

Komentáře

Avatar
Kit
Redaktor
Avatar
Kit:23.10.2012 10:47

Nikde jsem v tom SELECTu nenašel WHERE pro výběr přihlašovaného uživatele. Něco ve stylu

"SELECT id FROM `users` WHERE jmeno='$jmeno' AND heslo='$heslo'"
Odpovědět
23.10.2012 10:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:23.10.2012 10:57

On si selectne všechny a pak je proiteruje v aplikaci, určitě by to chtělo udělat na straně databáze.

Odpovědět
23.10.2012 10:57
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:23.10.2012 10:57

Mám dotaz, to MySQL.Data.dll musíš stáhnout? Případně by se zde hodil odkaz.

Editováno 23.10.2012 10:58
Odpovědět
23.10.2012 10:57
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:23.10.2012 11:05

Já to vím a také vím, že to má špatně. Proto jsem to tak napsal.

Navíc by všechna hesla měla být šifrována na straně databáze. Pokud by se stáhla celá tabulka, nebylo by jak otestovat shodnost hesla. Proto tam musí být WHERE ...

Odpovědět
23.10.2012 11:05
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Kit:23.10.2012 11:12

Našel jsem v tom další chybu: Databáze se připojí po kliknutí na tlačítko, stáhne tabulku, ověří a odpojí se. Normálně se spojení s databází udržuje po celou dobu běhu aplikace, aby se šetřilo požadavky na spojení.

Odpovědět
23.10.2012 11:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:23.10.2012 13:48

Já jsem to pojmenoval jako jednoduchý login :D někdo to hold změnil ale to nic nemění na tom že šífrování / databázi už si každý udělá podle svého tam jde jen o připojení do MySQL databáze zbytek jsou jen kraviny navíc a ano MySQL.Data.dll se musí stáhnout. Protože visual studio tyhle reference neobsahuje.

Odpovědět
23.10.2012 13:48
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:23.10.2012 14:07

Stahovat kompletní seznam uživatelů je vážnou chybou a svou ukázkou dáváš začátečníkům špatný příklad.

Dotazy typu "SELECT * FROM tabulka" se používají spíš výjimečně, například při výpisu jednoduchého menu, ale i tam se často dělá nejen selekce, ale i projekce a případný sort. Nechceš přece přetěžovat databázi, že ne?

Holt nebudu takovému dotazu vzdávat hold :)

Odpovědět
23.10.2012 14:07
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Зайчик
David Čápka:23.10.2012 14:20

Jestli ti to nebude vadit, rádi se na to s David Jančíkem podíváme a doplníme podmínku do dotazu, ono to bude malinko složitější, protože se určitě budou nějak parametrizovat.

Odpovědět
23.10.2012 14:20
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:23.10.2012 14:24

Jasný tak pokud to je vážná chyba tak to samozřejmě vadí ale tak já s databázema moc nedělal ještě tak jsem myslel že je vše v pořádku :) a chtěl jsem se s tím podělit protože jsem viděl že i na fórum někdo nevěděl jak se připojit k MySQL databázi. :)
sdraco : určitě mi to vadit nebude :) sám bych rád viděl jak to bude 100% správně. :)

Odpovědět
23.10.2012 14:24
Коммунизм для нашего будущего!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Зайчик
David Čápka:23.10.2012 14:29

My jsme rádi, žes to sem poslal, alespoň tu o tom něco bude :) S databázema jsme v C# zatím moc nedělali. Třeba tu díky tobě něco vznikne.

Odpovědět
23.10.2012 14:29
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Зайчик
Člen
Avatar
Odpovídá na David Čápka
Зайчик:23.10.2012 14:33

TO by bylo super, protože mám teď v plánu udělat jednu takovou pěknou aplikaci (jsem dostal nápadíček) :D a dost by se mi hodilo vědět něco trošku víc. :)

Odpovědět
23.10.2012 14:33
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:23.10.2012 14:35

Jasně, podstatné ve tvém článku bylo připojení k databázi MySQL z prostředí C# a to bylo splněno. Jen je škoda rušit spojení, když už jednou bylo navázáno.

Je dobré takovou databázi otevřít při spuštění aplikace stylem "lazy open", tedy aby se fyzicky otevřela až ve chvíli, kdy po ní budeme poprvé něco chtít, ale zavřela se až při ukončení aplikace.

Odpovědět
23.10.2012 14:35
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:23.10.2012 14:45

Jasné, chápu :) je zbytečné jí odpojovat, když po ní potom budeme zase něco chtít třeba :) takže se ukončí až s ukončením aplikace.

Odpovědět
23.10.2012 14:45
Коммунизм для нашего будущего!
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Motlja
Člen
Avatar
Motlja:13.10.2013 19:22

Prosím kde stáhnu MySQL.Data.dll? hledal jsem ale nic kloudného jsem nenašel

Odpovědět
13.10.2013 19:22
Umím a učím se to co chci, to co mě baví a zajímá!!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Motlja
David Čápka:13.10.2013 19:24

Máš lepší používat MS-SQL databázi, pokud máš na výběr.

Odpovědět
13.10.2013 19:24
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Motlja
Člen
Avatar
Motlja:13.10.2013 19:28

Právě že moc na výběr nemám zatím by mi opravdu měl stačit MySQL už jenom proto že jsou všude tutoriály i na php a navíc u sebe na serveru mám jen MySQL až budu trošku pokročilejší začnu se zajímat i o ty ostatní.... Stačilo by mi prosím jen to dll

Odpovědět
13.10.2013 19:28
Umím a učím se to co chci, to co mě baví a zajímá!!
Avatar
karel-911
Člen
Avatar
karel-911:19.10.2013 21:46

Ahoj, mám mysql na endoře s adresou https://sql9.endora.cz a nefunguje mi tam připojení. Píše mi to tento erro. Děkuju za odpověď.

Karel

 
Odpovědět
19.10.2013 21:46
Avatar
Ondřej Štorc
Redaktor
Avatar
Odpovídá na karel-911
Ondřej Štorc:19.10.2013 22:03

Nejspíše proto že u hostingu který je zdarma nemáš povolený vzdálený přístup do MySQL

Odpovědět
19.10.2013 22:03
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
karel-911
Člen
Avatar
karel-911:19.10.2013 22:06

Děkuju, zkusím ho zaplatit a uvidíme.

 
Odpovědět
19.10.2013 22:06
Avatar
karel-911
Člen
Avatar
karel-911:19.10.2013 22:17

Zkusil jsem na jiném free hostingu, kde by to mělo byt ok. A nejde to stále.

 
Odpovědět
19.10.2013 22:17
Avatar
Motlja
Člen
Avatar
Odpovídá na karel-911
Motlja:5.3.2014 22:31

Na free hostingech obvykle nemají povolený přístup zvenku tznm. že se můžeš připojovat pouze localhostově. Ale to ti nepůjde s touhle app protože jí na serveru nespustíš ;)

Odpovědět
5.3.2014 22:31
Umím a učím se to co chci, to co mě baví a zajímá!!
Avatar
Odpovídá na karel-911
Michal Štěpánek:3.5.2014 11:00

Do webových databází poskytovatel hostingu všeobecně zakazuje přístupy odjinud než z webových stránek, musel by sis to přímo dojednat s poskytovatelem...

Odpovědět
3.5.2014 11:00
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Jan Bezdíček
Redaktor
Avatar
Jan Bezdíček:15.7.2014 19:59

Taky mi to smrdí celkem SQL injekcí :)

 
Odpovědět
15.7.2014 19:59
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na Jan Bezdíček
Milan Křepelka:16.7.2014 8:25

Právě že ne. Ten dotaz je trochu nešťastně napsaný, ale právě tento kód je k SQL injection zcela imunní. Ten dotaz jak napsal Kit je nebezpečný v tomto směru.

 
Odpovědět
16.7.2014 8:25
Avatar
Mates1774
Člen
Avatar
Odpovídá na karel-911
Mates1774:30.11.2016 18:40

Občas u freehostingu stačí povolit vzdálený přístup do databáze. U endory stačí, když dáš upravit uživatele a potom povolit vzdálený přístup pak to jde.

 
Odpovědět
30.11.2016 18:40
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 25 zpráv z 25.