Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem C# Mysql chyba v kodu.

Dobrý den, při programování jsem narazil na takovou věc.
Jelikož jsem si kus kodu překopíroval z starého projektu tak asi špatně.
Mam vytvořenou tabulku FreeLance_KEYS
Klic, Status (obě jsou Text).
v Programu:

MySqlCommand prikaz = new MySqlCommand();
            MySqlDataReader cteni;
            MySqlConnection pripojeni = new MySqlConnection("Database=xx;DataSource=xx;UserId=xx;Password=xx");
            pripojeni.Open();
            prikaz.CommandText = "SELECT Status FROM FreeLance_KEYS WHERE klic = '" + keyBox.Text + "'";
            prikaz.Connection = pripojeni;
            cteni = prikaz.ExecuteReader();
            while (cteni.Read())
            {
                if(cteni["Status"].ToString().Contains("Pouzito")) 
                {

                }
                else if (cteni["Status"].ToString().Contains("Volny"))
                {
                    prikaz.CommandText = "UPDATE status FROM FreeLance_KEYS where klic= '" + keyBox.Text + "' set Pouzito";
                }
            }

s Update dělám poprvé, snad jsem to správně napsal :-D
Teď když se podívám do databáze tak tam ' Pouzito ' nevidím.
Je tam hodnota Volny. Co dělám špatně ? :-)

Předmět Autor Datum
Ten příkaz taky musíš provést: prikaz.ExecuteNonQuery(); Celý ten kód je nesmyslný, proč tam máš v…
Wikan 03.02.2013 18:03
Wikan
Ten select tak je aby to vybralo ten status tam kde zadal ten klíč.
siOnzeeSlav 03.02.2013 18:08
siOnzeeSlav
Ale na to ho vůbec nepotřebuješ. UPDATE FreeLance_KEYS SET status = 'Pouzito' WHERE klic = 'xxx' A…
Wikan 03.02.2013 18:11
Wikan
SQL Injection nevím co je. Já spíš preferuju Javu, v C# mam hodně málo znalostí včetně MySQL. prika…
siOnzeeSlav 03.02.2013 18:19
siOnzeeSlav
SQL Injection nesouvisí s žádným programovacím jazykem. A tenhle kód je nesmyslný i v Javě. using (… poslední
Wikan 03.02.2013 18:27
Wikan
Příkaz UPDATE neobsahuje klauzuli FROM.... podívej se na syntaxi. http://dev.mysql.com/doc/refman/5…
host 03.02.2013 18:05
host

SQL Injection nevím co je.
Já spíš preferuju Javu, v C# mam hodně málo znalostí včetně MySQL.

prikaz.ExecuteNonQuery();
There is already an open DataReader associated with this Connection which must be closed first.

Nemůžu dřív zavřít reader než updatuju tu tabulku. Jak to mam tedy udělat ?

            while (cteni.Read())
            {
                if(cteni["Status"].ToString().Contains("Pouzito")) 
                {

                }
                else if (cteni["Status"].ToString().Contains("Volny"))
                {
                    prikaz.CommandText = "UPDATE FreeLance_KEYS SET status = 'Pouzito' WHERE klic= '" + keyBox.Text+ "'";
                    prikaz.ExecuteNonQuery();
                }
            }

SQL Injection nesouvisí s žádným programovacím jazykem. A tenhle kód je nesmyslný i v Javě.

using (MySqlConnection pripojeni = new MySqlConnection("Database=xx;DataSource=xx;UserId=xx;Password=xx"))
{
    pripojeni.Open();
    using (MySqlCommand prikaz = new MySqlCommand("UPDATE FreeLance_KEYS SET status = 'Pouzito' WHERE klic = @klic", pripojeni))
    {
        prikaz.Parameters.AddWithValue("@klic", keyBox.Text);
        prikaz.ExecuteNonQuery();
    }
}

Zpět do poradny Odpovědět na původní otázku Nahoru