Avatar billede testpilot_dk Nybegynder
06. april 2007 - 16:51 Der er 15 kommentarer og
2 løsninger

Select fra 2 tabeller

Hej! 

Jeg har følgende problem i min asp.net kode.

Jeg har lavet en klasse som tager sig af database kald og sådan, denne klasse fungere fint, men jeg har en SQL sætning som fungere fint direkte i min  access Database.

  Jeg forventer at få en IDataReader tilbage hvilket jeg også gør, den er bare tom.

  Min SQL sætning ser således ud.
"SELECT vare_tabel.vare_beskrivelse_header,vare_tabel.vare_beskrivelse_main, vare_tabel.vare_pris, picture.billed_str_x, picture.billed_str_y, picture.billed_link, picture.billed_title FROM vare_tabel INNER JOIN picture ON (vare_tabel.vare_billede2=picture.billed_id) Or (vare_tabel.vare_billede1=picture.billed_id);

I access giver den 4 resultater tilbage og i asp.net kode giver den ingenting tilbage, hvilket jeg ikke lige forstår.

Er der nogen som har en idee om hvad der er forkert.
Avatar billede dr_chaos Nybegynder
07. april 2007 - 08:07 #1
prøv at vise noget kode.
Er du sikker på at din connectionstring er rigtig ?
Avatar billede testpilot_dk Nybegynder
07. april 2007 - 16:03 #2
Hej!

Jeg er sikker på at min connectionstring er korrekt.
For jeg kan sagtens lave andre database kald!

Men min Select funktion ser således ud.

    public IDataReader SelectWithoutCloseOpen(string SQL)
    {
        OleDbDataReader reader = null;
        try
        {
            OleDbCommand oledb = new OleDbCommand(SQL, cn);
            reader = oledb.ExecuteReader();
        }
        catch (Exception ex)
        {
            reader = null;
        }
        return reader;
    }

og jeg  benytter ovenstående SQL sætning.
Avatar billede testpilot_dk Nybegynder
07. april 2007 - 16:04 #3
og den bliver ikke catched, dvs. der kan ikke være  fejl i SQL sætningen eller forbindelsen.
Avatar billede dr_chaos Nybegynder
09. april 2007 - 08:37 #4
Hvordan bruger du funktionen og forsøger at læse data ?
Avatar billede nielle Nybegynder
09. april 2007 - 09:31 #5
Hvis du forsøger at fjerne din try-catch blok rundt om dit kald til ExecuteReader ... hvad får du så af fejlbesked?
Avatar billede testpilot_dk Nybegynder
09. april 2007 - 10:37 #6
Svar til nielle!
  Jeg har debugget mig igennem og kan se at den ikke bliver catchet, dvs. at min SQL sætning og forbindelse må være god nok.

Svar til dr_chaos!
  Mit forløb er: jeg åbner database forbindelsen
                  Kalder ovenstående funktion fra min page_load funktion
                  Tester på om den er null eller tom
                  Hvis ikke, så løber den igennem alle records i IDataReaderen.
                  Lukker database forbindelsen.

Det virker fint andre steder fra, men der kalder jeg ikke data fra 2 tabeller, kan det være fordi at jeg ikke giver den nogen værdier til Where klausulen?
Avatar billede dr_chaos Nybegynder
09. april 2007 - 10:49 #7
hvis du har testet den præcise sql sætning i access databasen så burde det virke og give records retur.
Avatar billede dr_chaos Nybegynder
09. april 2007 - 10:50 #8
jeg tror du skal kalde open på din connection .
Avatar billede dr_chaos Nybegynder
09. april 2007 - 10:53 #9
Nu bruger jeg ikke selv oledb men udfra dette eksempel her:
http://msdn2.microsoft.com/en-us/library/system.data.oledb.oledbcommand(vs.71).aspx
Kalder de open.
Avatar billede nielle Nybegynder
09. april 2007 - 11:03 #10
Får du en reader tilbage med nul rækker (altså en tom reader) eller får du null tilbage i stedet for en tom reader?
Avatar billede testpilot_dk Nybegynder
09. april 2007 - 11:26 #11
Jeg får en reader tilbage med 0 rækker!

Forbindelsen til databasen er åben.
Avatar billede nielle Nybegynder
10. april 2007 - 18:19 #12
Det lyder mystisk.

Et dumt spørgsmål: Der er den samme mdb-fil du har liggende lokalt hos dog og så på dit website?
Avatar billede testpilot_dk Nybegynder
10. april 2007 - 18:43 #13
Hmm!

Det var faktisk ikke noget dumt spørgsmål, det var fordi at min database på websitet ikke havde noget data i de 2 tabeller som jeg forsøgte at hente fra.

Send nogle svar, så deler i point!
Avatar billede nielle Nybegynder
10. april 2007 - 18:44 #14
Svar ;^)
Avatar billede nielle Nybegynder
10. april 2007 - 18:47 #15
Din funktion kan iøvrigt skrives lidt mere kompakt:

public IDataReader SelectWithoutCloseOpen(string SQL)
{
    try
    {
        OleDbCommand oledb = new OleDbCommand(SQL, cn);
        return oledb.ExecuteReader();
        }
        catch (Exception ex)
        {
        return null;
        }
}
Avatar billede testpilot_dk Nybegynder
10. april 2007 - 18:51 #16
ja, selvføgelig kan den det :D

Takker!

Dr_chaos, send en kommentar eller svar, hvis du ønsker point
Avatar billede dr_chaos Nybegynder
24. april 2007 - 19:36 #17
svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester