Datareader nacte jenom prvni zaznam z databaze SQL – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Datareader nacte jenom prvni zaznam z databaze SQL – .NET – Fórum – Programujte.comDatareader nacte jenom prvni zaznam z databaze SQL – .NET – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
massic0
Duch
19. 9. 2012   #1
-
0
-

Asi jsem blbej, ale mám to udělaný podle příkladů z netu i z msdn.

Jenže když se zkusím přihlásit pomocí jiného záznamu v DB než prvního, tak se to chová jakože špatný login.

A u toho jediného záznamu to pro změnu nevidí třetí sloupec.( viz. ten kod oznaceny jako komentar)

Děkuju moc za jakkoukoliv radu či nasměrování.

public bool LoginPomociSQL(string _username, string _password)
{
      bool prihlaseno = false; 
      string ConnectionString = " Server=BlilHates-PC\\SQLEXPRESS;Initial Catalog=elitedental;Trusted_Connection=yes";
           
   using ( SqlConnection pripojeni = new SqlConnection(ConnectionString) ) {  // inicializace objektu spojení na databázi
    
     try
        {                                  
            SqlDataReader myReader = null;
            SqlCommand myCommand = new SqlCommand("select * from [users]", pripojeni);
            pripojeni.Open(); 
            myReader = myCommand.ExecuteReader();
            while(myReader.Read())
             {
                 if ((_username == (myReader["login"].ToString())) && (_password == (myReader["pass"].ToString())))
                 {
                     prihlaseno = true;
                   
               //      if ((myReader["status"].ToString())=="admin" ) 
                //         kdojeprihlasen = "admin"; 
                 //      else kdojeprihlasen = "recepce";
                   //  break;
         // tady mi to dela druhou chybu ze to nevidi treti sloupec       
		 }
                 else
                     prihlaseno = false;                    
            }            
       myReader.Close();     
     }     
        catch(Exception e)
             {
                MessageBox.Show("Chyba připojení k databázi - otevírání    " + e.ToString(),"Chyba ověření");         
             }                 
          
       // uzavření databáze.......................................
         try
            {
                pripojeni.Close(); // a zase uzavřeme
            }
        catch(Exception e)
            {
               MessageBox.Show("Chyba připojení k databázi - zavírání     " + e.ToString(),"Chyba databáze");
            }

   }
     if (prihlaseno == true) return true; else return false;

}
Nahlásit jako SPAM
IP: 78.128.186.–
Vaizo0
Stálý člen
20. 9. 2012   #2
-
0
-

Hmm to je zvláštní, pokud ta tabulka obsahuje sloupec status, tak by to mělo fungovat. Není možné, že v hodnota tohoto sloupce je null? Zkus tam na to raději dát Convert.ToString(myReader["status"]).

A pokud to furt nepude, napiš sem text a typ té chyby  

Nahlásit jako SPAM
IP: 85.93.127.–
VladislavK0
Super člen
20. 9. 2012   #3
-
0
-

Jen myslenka

Stringove pojmenovani sloupcu je urcite CaseSensitive takze nemas nahodou ten status s velkym "S" na zacatku, nebo tak neco ???

Nahlásit jako SPAM
IP: 89.24.12.–
Manželka programátora pošle svého muže koupit chleba s dovětkem kdyby měly housky přines jich deset! Co přinese programátor??
massic
~ Anonymní uživatel
12 příspěvků
20. 9. 2012   #4
-
0
-

Tak jsem to udělal a je to stejné :( a co s tím čtením více záznamů? Vezme to jenom první řádek a další už bere jako špatné přihlášení.

Ještě mě napadlo, jestli není něco se serverem, mám sqlexpress 2012 .

podotýkám že řádka 92 je to co mám v ukázkovém kódu výše zakomentované, tedy chyba s čtením třetího sloupce...

díky :)

Nahlásit jako SPAM
IP: 78.128.186.–
Vaizo0
Stálý člen
20. 9. 2012   #5
-
0
-

Nemůžeš sem prosím dát screenshot toho, co ti normálně vrátí dotaz select * from [user], když ho pustíš přímo na databázi?

Nahlásit jako SPAM
IP: 85.93.127.–
massic
~ Anonymní uživatel
12 příspěvků
20. 9. 2012   #6
-
0
-

Jasnacka, jinak to zkouším debugovat, a něco je v nepořádku s tím datareaerem. V 90% případů napíše že  enumeration yeilded empty .  (prostě že je prázndej)

obrázek DB zde :

Nahlásit jako SPAM
IP: 78.128.186.–
P
~ Anonymní uživatel
212 příspěvků
20. 9. 2012   #7
-
0
-

Lepsi je poslat dotaz s podminkou WHERE a s parametry pro zadany login a password, ktery vrati bud jeden zaznam nebo nic.

Nahlásit jako SPAM
IP: 85.93.116.–
massic
~ Anonymní uživatel
12 příspěvků
20. 9. 2012   #8
-
0
-

Můžu poprosit příklad? do čeho bych načetl odpověd na ten dotaz?

abych pak mohl vyhodnotit jestli nějaká odpověd je?

Nahlásit jako SPAM
IP: 78.128.186.–
VladislavK0
Super člen
20. 9. 2012   #9
-
0
-

Ja si zkopiroval cely tvuj kod jen jmena sloupcu jsem nahradil za indexy a vse funguje jak bych ocekaval.

Jak jsem psal v predchozim prispevku jmena sloupcu jsou caseSensitive a navic by v DTB ten sloupec mohl byt s nejakym white znakem pak je rozdil mezi "status" a "status " stejne tak to porovnani 

_username == (myReader["login"].ToString())

nevrati true pokud v _username="pepa " protoze v myReader["login"].ToString()="pepa"

chyby nych hledal timto smerem

prvni oprava by byla asi takovato

_username.Trim() == (myReader["login"].ToString().Trim())

Nahlásit jako SPAM
IP: 89.24.12.–
Manželka programátora pošle svého muže koupit chleba s dovětkem kdyby měly housky přines jich deset! Co přinese programátor??
massic
~ Anonymní uživatel
12 příspěvků
20. 9. 2012   #10
-
0
-

Děkuji všem za radu, přeinstaloval jsem SQL Server a pomohlo to :)

Nahlásit jako SPAM
IP: 78.128.186.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 15 hostů

Podobná vlákna

Má první databáze — založil Bilko

C# SQL Databáze - INNER JOIN — založil Learnt

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý