Diskuze: MySqlDataReader myreader

C# .NET .NET (C# a Visual Basic) MySqlDataReader myreader American English version English version

Avatar
Frantisek Jesatko:

Zdravím všechny a prosím o radu načítám data z mysql db tabulka má 26 sloupců do budoucna určitě víc . Udělám dotaz na jeden řádek a ten chci editovat ve formu. Bohužel při načítání do formu mi to skončí na sloupci 16. Dál to nepokracuje . Je to nejaký limit nebo se to dá nejak obejít ???
Díky za reakce

 
Odpovědět 21.12.2015 22:02
Avatar
Odpovídá na Frantisek Jesatko
Michal Štěpánek:

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

Nahoru Odpovědět 21.12.2015 23:06
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Frantisek Jesatko:

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
           {
           }
 
Nahoru Odpovědět 21.12.2015 23:15
Avatar
Frantisek Jesatko:

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 ?

 
Nahoru Odpovědět 22.12.2015 21:37
Avatar
Odpovídá na Frantisek Jesatko
Michal Štěpánek:

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

Nahoru Odpovědět 23.12.2015 10:42
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Frantisek Jesatko:

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

 
Nahoru Odpovědět 26.12.2015 12:37
Avatar
Odpovídá na Frantisek Jesatko
Michal Štěpánek:

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

Nahoru Odpovědět 26.12.2015 13:24
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Frantisek Jesatko:

Jj jina pismenka jdou normalne. Trochu nechapu jak parametry ?

 
Nahoru Odpovědět 26.12.2015 15:02
Avatar
Nahoru Odpovědět 26.12.2015 15:42
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Frantisek Jesatko:

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í.

 
Nahoru Odpovědět 26.12.2015 18:07
Avatar
Odpovídá na Frantisek Jesatko
Michal Štěpánek:

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

Nahoru Odpovědět 26.12.2015 18:28
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 11 zpráv z 11.