Diskuze: MySqlDataReader myreader
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Myslím, že bude problém v datech, protože k nějakému omezení v počtu sloupců nevidím důvod. Na druhou stranu, proč ta tabulka musí mít tolik sloupců? Nebylo by pohodlnější to nějak rozdělit do více tabulek? Jak to načítáš a jak to zobrazuješ?
No tabulka má proto tolik sloupcu protoze tam mam ulozeny nastaveni aplikace jednotlivých uzivatelu. Do datagrid neni problem ale pokud to chci do textBoxu tak mi to konci na 16tem sloupci. Nacitam to tak :
MySqlConnection connection = new MySqlConnection(Globals.connectionstr);
try
{
string query = "select * from nastaveni where id =" + Globals.predej_id;
MySqlCommand adapter = new MySqlCommand(query, connection);
MySqlDataReader myreader;
connection.Open();
myreader = adapter.ExecuteReader();
if (myreader.Read())
{
textBox1.Text = myreader.GetString("id");
textBox2.Text = myreader.GetString("nazev");
textBox3.Text = myreader.GetString("adresa");
textBox4.Text = myreader.GetString("mesto");
textBox5.Text = myreader.GetString("Psc");
textBox6.Text = myreader.GetString("cinnost");
textBox7.Text = myreader.GetString("ico");
textBox8.Text = myreader.GetString("dic");
textBox9.Text = myreader.GetString("hodinovka");
textBox10.Text = myreader.GetString("prescas");
textBox11.Text = myreader.GetString("kmsazba");
textBox12.Text = myreader.GetString("max_cas_naceste");
textBox13.Text = myreader.GetString("email");
textBox14.Text = myreader.GetString("telefon");
textBox15.Text = myreader.GetString("splatnost");
textBox16.Text = myreader.GetString("bank");
textBox17.Text = myreader.GetString("hlavicka_faktury");
textBox18.Text = myreader.GetString("paticka_faktury");
textBox19.Text = myreader.GetString("usrn");
textBox21.Text = myreader.GetString("pasw");
textBox22.Text = myreader.GetString("adresafb");
textBox23.Text = myreader.GetString("adresafak");
textBox24.Text = myreader.GetString("adresavyk");
textBox25.Text = myreader.GetString("usrnvyk");
textBox26.Text = myreader.GetString("paswvyk");
textBox27.Text = myreader.GetString("cestaflexibee");
}
connection.Close();
}
catch
{
}
Tak jsem na to konecne prisel melo to problem s polem typu memo. Musí být
na úrovni db nastaveno mediumtext. Nevím proč ale takto to chodí.
Jinak teď me trápí jiná věc . Kodování češtiny db mam utf8 všechny
písmena to píše dobře ale z texboxů to nepřenáší č vzdycky to napíše
jen C. Kde by mohl být problém ?
Bez nějakého kódu pro ukládání ti těžko někdo poradí. Jedno ti ale poradím. Bylo by dobré, kdyby název těch textboxů měl nějaký vztah k položce, kterou zobrazuje, třeba název "textBox21" ti za pár měsíců nic neřekne, budeš složitě dohledávat, co vlastně zobrazuje. Kdyby se jmenoval třeba "TextBoxPasw", tak hned víš, kterou hodnotu má ukazovat... Pro pozdější úpravy kódu je věcné pojmenování určitě výhodnější, ale je to čistě na tobě, jak to chceš mít...
Zdravím tak tady přikládám kod pro ukladani :
MySqlConnection connection = new MySqlConnection(Globals.connectionstr);
string query = "update uzivatel set zkratka_uz = '" + textBox2.Text.ToString() + "', jmeno = '" + textBox3.Text.ToString() + "', username = '" + textBox4.Text.ToString() + "',heslo = '" + textBox5.Text.ToString() + "',role = '" + textBox6.Text.ToString() + "',skupina = '" + textBox7.Text.ToString() + "' where id = " + Globals.predej_id;
MySqlCommand adapter = new MySqlCommand(query, connection);
MySqlDataReader myreader;
connection.Open();
myreader = adapter.ExecuteReader();
// MessageBox.Show("Ulozeno");
Globals.stavovy_radek = "Data z formuláře uživatel byla upravena !";
connection.Close();
pokud do kterehokoliv pole vložím č tak se přenese c .
DB je nastavena jako UTF8.
Díky za reakce
Pro ukládání do DB bys měl používat parametry, jinak ti někdo SQL injekcí může zrušit celou DB. Jiná písmenka se uloží normálně?
Jj jina pismenka jdou normalne. Trochu nechapu jak parametry ?
Prostuduj si toto
http://www.itnetwork.cz/…-zpracovani/
Abych se přiznal tak o sql injection jsem slysel pouze ve spojitosti s
webovýma aplikacema .
A ja tvořím aplikaci jako klienta mysql protože se k db potřebuju
připojovat z ruzných míst po republice. App neni nikde na webu. Ikdyž
přiznavam že metoda parametrů je elegantní.
Není to jen o "eleganci", ale o tom, že bez parametrů ti skutečně nějaký záškodník může smazat v DB co bude chtít...
Zobrazeno 11 zpráv z 11.