17. juni 2009 - 09:51Der er
38 kommentarer og 1 løsning
Hvordan henter jeg data med SQLDataSource i Visual Web Developer?
Jeg har lige hentet VWD Express 2008 Edition og vil nu gerne have fat i min SQL db ved hjælp af SQLDataSource komponent der i VWD. Jeg har en SELECT som jeg skal bruge for at hente daata fra min db. Den ser således ud:
set res = yourdbconnection.execute("Select Employee, DateOfRetire, ComputerName, DateOfWarrantyEnded FROM StaffLeftCompany WHERE SecurityCode='" & Page.Request("id") &"'") while not res.eof strEmployee = res.Fields("Employee").Value strDateOfRetire = res.Fields("DateOfRetire").Value strComputerName = res.Fields("ComputerName").Value strDateOfWarrantyEnded = res.Fields("DateOfWarrantyEnded").Value res.MoveNext wend res.Close
Det er faktisk blevet konverteret fra PHP. Nu ligger det sig sådan at jeg sidder med VWD og har tilføjet min komponent og via design tab har lavet en select som ser således ud:
--------------------- Slut default.aspx -------------------------
2 ting i det her. For det første aner jeg ikke om det skal se sådan her ud. For det andet har jeg brug for hjælp til at få lagt mine felter over i nogle variabler, som jeg kan bruge.
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Som udgangspunkt ser koden fin ud - hvis man bruger drag/drop/click muligheder i VS skal man gøre forholdsvis meget galt for at det ikke virker.
Til dit andet spørgsmål må jeg nok svare at jeg tror du er lidt skævt på den. en DataSource vil man benytte til at binde data direkte op imod en anden kontrol, fx en Repeater, hvilket vil sige at du med dit nuværende setup skal indsætte en data-kontrol (fx repeater, gridview eller lignende) og sætte dens datasourceid til at være din sqldatasource hvorefter resten (næsten) sker af sig selv. Skal du have værdierne ud i variabler skal du ikke benytte en sqldatasource, men derimod over i din codefile og læse data ind via fx en datareader.
Aha, det var godt af vide. Jeg koder selv i delphi på hobbyplan og der er der osse kontrolkomponenter til behandling af DB. Er der en form for DB editbokse i VWD? Men kan tilknytte en af felterne til?
Iøvrigt, jeg kunne meget godt tænke mig at nogen til at gøre det for mig. Det er ikke fordi, at det er meget. Jeg har kun brug 1 side, hvor der skal udfyldes nogle felter og indholdet af det skal sættes ind i en db.
er det noget du ville kunne gøre for mig. Jeg vil selvfølgelig give flere point for det.
Grunden til at jeg ikke lige nu har den helt store lyst til at sætte mig ind i lige det her, er fordi at jeg har brugt flere dage på at få det sat op i PHP, hvilket jeg fik til at køre, men der var bare em lille detalje, som jeg ikke synes virkede helt så nemt i forhold ASP. Det er bare så jeg kan komme lidt videre med mit projekt, idet at der i projektet indgår delphikode osse.
Jeg kan godt løse det - men kan ikke udføre arbejde gennem Eksperten. Men hvis du forsøger og kommer med din kode når du støder på et problem kan vi sikker løse det.
Hvis din URL ser sådan ud virker det til at være som det skal. Prøv under konfigurationen af din DataSource at teste din select med værdien fra querystringen og se om den giver et resultat.
Hmm, nu er det ikke for at lyde dumt, men jeg har prøvet at se hvor det er henne i konfiguration af datasource, men jeg kan ikke sådan liiige se hvor det er henne. :(
jeg bruger sjældent disse standard data sources og aldrig op imod simple kontroller som fx labels så jeg har ikke den store erfaring omkring hvad du kan forsøge dig med for at komme videre - jeg tror mit bedste bud, hvis det er muligt, vil være fx at sætte profileren op imod databasen og se om den forespørgsel der kommer er som forventet.
Nu er jeg slet ikke sikker på at det er den rigtige måde, det med en label, det var noget jeg troede man kunne. Men hvordan ville man ellers lave det, hvis man bare skal have noget tekst, som er dynamisk, på skærm?
Ahh, jeg kigger lige på det du har sendt tidligere til mig i #9. :) Hvor skal man skrive response.write henne ellers? Kan det osse gøres i body området?
som udgangspunkt ser der ikke ud til at være noget i vejen med det du gør - det er bare svært at rådgive og fejlsøge om metoder man ikke selv benytter.
Response.Write benytter man ikke i .NET - man arbejder objektorienteren og sætter værdier på kontroller, fx
Linket er kun et eksempel og er sat op for simplicitetens skyld og det er også kun én måde at gøre det på (bortset fra Response.Write) - indholdet i eksemplet kunne måske have givet idéer til hvad der kunne ledes efter af eksempler på søgemaskiner.
Ok. Det kigger jeg lige på. En anden ting til linket i #9, hvordan fletter du htmlkode sammen? For som det er lige nu i eksemplet skriver man det ud fra C#, men jeg synes ikke at man har mulighed for at styre hvor henne på siden man vil have teksten placeret. For jeg vil jo gerne bla have det placeret det i en <fieldset> <legend></legend> </fieldset>
i .NET er al markup delt (næsten) fuldstændig fra kode - det er derfor der ikke bare er én fil men både en .aspx og en .aspx.cs fil, aspx er til markup og .cs er til kode. For at smide data fra kode og over i markup vil man placere en kontrol, fx en repeater, en textbox eller en label, i sin markup-kode og enten databinde til eller sætte egenskaber på kontrollen fra kode-filen.
Med al respekt - mange af de ting du spørger om hører hjemme under absolut grundlæggende kendskab til .NET og der skal vi selvfølgelig alle sammen starte, men jeg kan i en tråd på Eksperten ikke begynde at oplære dig eller andre, jeg kan (forsøge) at løse problemstillinger. Skal du lære .NET findes der masser af materiale både på nettet og i bogform.
Kort fortalt, du skal ikke bruge en event på din label - det letteste vil være at placere koden i sidens Page_Load, som allerede ligger i din code-file. dvs forklaret i pseudo-kode;
page_load //connect db //execute sql Label1.Text = rdr["kolonne"].ToString(); //close conn
Det er helt iorden. Forstår godt hvad du siger. Ogj eg forstår osse godt det eksempel du har lavet. Og det virker. Dog vil jeg, hvis det er iorden lige spørge ind til,
1. Hvad jeg skal gøre for at få hentet url ind til min SQL tekst med C#? 2. Hvis jeg gerne vil have skrevet noget FØR min Label, men stadig i <fieldset> <legend></legend> </fieldset>, hvad gør man så? Jeg troede først at man skulle bruge response.write, men den kan jeg ikke sådan lige se, hvordan Label1 kan blive flettet sammen.
protected void Page_Load(object sender, EventArgs e) { string myid = "765b1e492c8381c719c0fe6e7ba6a77024fc8f58f3473f1dfbee48b03e7e4fb1"; string connectString = @"Data Source=DKSODT0470\SQLEXPRESS;Initial Catalog=StaffMembers;Integrated Security=True"; SqlConnection con = new SqlConnection(connectString); con.Open(); string sql = "select Employee, DateOfRetire, ComputerName, DateOfWarrantyEnded from StaffLeftCompany WHERE SecurityCode = @SecurityCode"; SqlCommand cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("SecurityCode", myid); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { string order = reader[0].ToString(); Response.Write("Order is " + order + "<br>"); Label1.Text = reader[0].ToString(); } reader.Close(); con.Close(); }
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.