lørdag, januar 23, 2021

ASP.NET ListBox + Textbox + SQL

Daily Rush Debat Programmering ASP.NET ListBox + Textbox + SQL

  • Forfatter
    Emne
  • #0

    Thormam
    Bruger
    4.043 indlæg
    Offline

    SÅ – håber i er klar til en mere.
    Lad mig få det her forklaret ordentlig fra start..

    http://i28.tinypic.com/2m7djj7.jpg

    Som i kan se har jeg til venstre en listbox (lst_oversigt) med autopostback.

    Jeg har en database med en tabel (Cisco) og columns (Navn, Dato, Titel, Tekst)

    lst_oversigt viser en liste med “Titel” uden problemer.

    Til højre for er min txt_indhold og planen er at man markere en titel i lst_oversigt og så henter den automatisk teksten og bliver vist i txt_indhold.

    Har testet autopostback og det virker:

    protected void lst_oversigt_SelectedIndexChanged(object sender, EventArgs e)
    {
    if (lst_oversigt.SelectedValue != null)
    txt_indhold = lst_oversigt.SelectedValue.ToString();
    }

    Problemet er hvordan jeg får hentet fra column “Tekst” hvor “Titel” er lig med den jeg har markeret i listboxen..

    Håber det giver lidt mening. Har rodet med en del kode der bare ikke spiller og lige nu ser det sådan her ud – uden den er komplet for jeg har ikke fået String HentTekst forbundet med @Titel

    protected void lst_oversigt_SelectedIndexChanged(object sender, EventArgs e)
    {
    string hentTekst = lst_oversigt.SelectedValue;
    SQL forbindelse = new SQL();
    SqlCommand sqlcmd = new SqlCommand(“SELECT Tekst FROM Cisco WHERE Titel = @Titel”);
    SqlDataReader sqlread = sqlcmd.ExecuteReader();
    while (sqlread.Read())
    {
    txt_indhold.Text = (string)sqlread[“Tekst”].ToString();
    }
    sqlread.Close();
    }

    Hvis i kan se jer ud af det ville jeg juble! Tester videre imens.. kunne jo være

Viser 13 kommentarer - 1 til 13 (af 13 i alt)
  • Forfatter
    Kommentarer
  • #1

    Thormam
    Bruger
    4.043 indlæg
    Offline

    Skal lige nævnes at jeg har selve SQL forbindelsen i en App_code “SQL.cs” og den ser således ud:

    public SQL()
    {
    SqlConnection LoginForbindelse = new SqlConnection();
    LoginForbindelse.ConnectionString = “Data Source=XXXInitial Catalog=VidenOm;User ID=XXX;password=XXX;Integrated Security=True;”;
    //Gemmer Loginforbindelsen i forbindelse
    forbindelse = LoginForbindelse;
    }

    #2

    Basil
    Bruger
    310 indlæg
    Offline
    #3

    Thormam
    Bruger
    4.043 indlæg
    Offline
    #4

    Wayfarer
    Bruger
    5.714 indlæg
    Offline

    hmm. han har da ikke åbent sin connection, har han?
    #0
    LoginForbindels­e.Open(); // (husk også at lukke den igen)

    btw #0 tag og put din connectionstring i web.config og incrypt den med en RSA key.. mere sikkert.
    (http://www.developerfusion.com/code/5263/encrypting-webconfig-sections-in-aspnet-20/, btw hush at RSAs keyen ligger på den computer den køre på, så kode først filen når den ligger på servere. (Keyen er en fil på computeren))

    http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.aspx

    I believe our future depends powerfully on how well we understand this cosmos in which we float like a mote of dust in the morning sky. -Carl Sagan

    #5

    Thormam
    Bruger
    4.043 indlæg
    Offline

    Tak #4 – Jeg husker at flytte den til webconfig når lige det her kører.

    prøvede at se bort fra min SQL.cs og samle det – desuden åbne forbindelsen og få sqlcon ind i min sqlcmd:

    http://i27.tinypic.com/ak72up.png

    Så nu er der da forbindelse

    #6

    Wayfarer
    Bruger
    5.714 indlæg
    Offline

    #5 hmm roger, ´jeg kan se der er bølge streg under sqlcmd, tag lige markøren over det, så vi kan se hvad den siger….

    I believe our future depends powerfully on how well we understand this cosmos in which we float like a mote of dust in the morning sky. -Carl Sagan

    #7

    Thormam
    Bruger
    4.043 indlæg
    Offline
    #8

    Wayfarer
    Bruger
    5.714 indlæg
    Offline

    hmm du har skrevet @Tekst i som dine parameter i dine parameter men i din sqlcommand er det @Title?
    Prøv og ændre @Tekst til @Title (hvis det er det du mener)

    btw til #7 metoden er åbenbart forældet, prøv og brug dette istedet. (selvom den er forældet kan det dog stadig virke)
    sqlcmd.Parameters.AddWithValue(“@Title”, hentTekst);

    I believe our future depends powerfully on how well we understand this cosmos in which we float like a mote of dust in the morning sky. -Carl Sagan

    #9

    Thormam
    Bruger
    4.043 indlæg
    Offline

    #8 hold da kæft en brøler..

    Kode:

    protected void lst_oversigt_SelectedIndexChanged(object sender, EventArgs e)
    {
    string hentTekst = lst_oversigt.SelectedValue;
    SqlConnection sqlcon = new SqlConnection(“Data Source=XXX;Initial Catalog=VidenOm;User ID=XXX;password=XXX;Integrated Security=True;”);
    SqlCommand sqlcmd = new SqlCommand(“SELECT Tekst FROM Cisco WHERE Titel = @Titel”, sqlcon);
    sqlcmd.Parameters.AddWithValue(“@Titel”, hentTekst);
    sqlcon.Open();
    SqlDataReader sqlread = sqlcmd.ExecuteReader();
    while (sqlread.Read())
    {
    txt_indhold.Text = (string)sqlread[“Tekst”].ToString();
    }
    sqlread.Close();
    }

    Giver sørme dette resultat: http://i31.tinypic.com/4u9ysi.png

    Tak for det FinalWarlord – jeg er god til at stirre mig blind i det

    #10

    Wayfarer
    Bruger
    5.714 indlæg
    Offline

    #9 hehe np.. det er en TYPISK fejl når vi snakker om database håndtering.

    Bare vent til at man begynder at “slutte” flere commands sammen, så begyndet det blive rigtigt “sjovt” (Inner Joins etc:-)

    Har selv lavet MASSER af sådanne fejl.. og laver dem stadig

    I believe our future depends powerfully on how well we understand this cosmos in which we float like a mote of dust in the morning sky. -Carl Sagan

    #11

    Thormam
    Bruger
    4.043 indlæg
    Offline

    Det værste er sgu når man ikke fokusere på det fordi man mener man har den del af koden klar – så det er alt andet der driller!

    Det er der det er godt at få det kigget igennem med andre øjne.. Om ikke andet til man bliver lidt mere rutineret!

    Tak igen :p

    #12

    Wayfarer
    Bruger
    5.714 indlæg
    Offline

    #11 hehe yep.. og når man så kommer under tidspres er der ikke altid til at rigtigt fixe fejlene, så bliver man nød til at komme med nogle hack and slash fixes og håber ingen ser det..

    btw ikke at vi ikke vil hjælpe dig, (da jeg finder det ganske interessant/sjovt), men jeg har personligt OGSÅ brugt
    MSDN forums
    og asp.net forums..

    btw stil ikke spørgsmål om webcontrols og alt det direkte er web relateret etc på msdn forums, det kan de godt blive lidt miffed over. Stil dem på asp.net forums istedet..

    I believe our future depends powerfully on how well we understand this cosmos in which we float like a mote of dust in the morning sky. -Carl Sagan

    #13

    Holger-IST-
    Bruger
    6.970 indlæg
    Offline

    Når du nu er ved at rode med at hente fra en database så tag lige at bruge LINQ to SQL, det er så meget mere elegant imo, så får du også parametriseret dine SQL kald automatisk (ingen SQL injection)

    http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspx (linker til den sidste side, da der er links til alle de andre sider)

    kræver dog at du bruger .Net 3.5 (hvilket jeg ikke ser nogen grund til ikke at gøre, med mindre der er krav fra serveren/udv miljøet)

    - Holger "A woman drove me to drink and I didn't even have the decency to thank her." - W. C. Fields

Viser 13 kommentarer - 1 til 13 (af 13 i alt)
  • Du skal være logget ind for at kommentere på dette indlæg.