Načtení prměnné z databáze   zodpovězená otázka

ASP.NET WebForms

Zdravím Vás všechny,

jak načtu v data z databáze do proměnných a ty pak mohl doplnit do Lable.Text?

v tuto chvíli mám představu

DIM ID=xxx

Nacti sloupec JMENO z KAMARADI kde IDKamarada = ID a prirad to do LABEL1.text

Vím, že to při větším množství dta nebude optimální, ale v tuto chvíli by mi to mělo stačit.

Díky Dušan

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Na tomto webu je o tom článek, jen by to chělo trochu hledat:

http://vbnet.cz/clanek--52-komunikace_s_...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Zdravím,

tento článek jsem již studoval (a nyní opět),a le nedaří se mi dostat hodnotu z databáze do proměnné.

Dim Jmeno As String
        Dim ID As String = 20001

        Dim ConnectionString = "Server=localhost\SQLEXPRESS;Initial Catalog=Freya;Trusted_Connection=yes;"
        Dim SqlConnection As New SqlConnection(ConnectionString)
        Dim SqlCommand As New SqlCommand("SELECT [NazevZbozi] FROM [zbozi] WHERE IdZbozi=2001", SqlConnection)


        SqlConnection.Open()
        Dim DataReader As SqlDataReader = SqlCommand.ExecuteReader()

        Jmeno = CStr(DataReader("NazevZbozi"))


        DataReader.Close()

        SqlConnection.Close()

        Label1.Text = Jmeno

těch variant pro načtení proměnné Jmeno jsem zkoušel několik.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Omlouvám se, měl jsem chybu v ID...

a tak mi to nefungovalo. Zde je funkční kód:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim ID As String = 20001
        Dim Jmeno As String
        Dim KratkyPopis As String
        Dim DlouhyPopis As String
        Dim MOC As String
        Dim Link As String
        Dim Material As String
        Dim HlavniObrazek As String
        Dim Nahled1 As String
        Dim Nahled2 As String
        Dim Nahled3 As String
        Dim Nahled4 As String

        Dim ConnectionString = "Server=localhost\SQLEXPRESS;Initial Catalog=Freya;Trusted_Connection=yes;"
        Dim SqlConnection As New SqlConnection(ConnectionString)
        Dim SqlCommand As New SqlCommand("SELECT [NazevZbozi], [KratkyPopis], [DlouhyPopis], [HlavniObrazek], [Nahled1], [Nahled2], [Nahled3], [Nahled4], [MOC], [LinkMaloobchod], [Material] FROM [zbozi] WHERE IdZbozi=20001", SqlConnection)


        SqlConnection.Open()
        Dim DataReader As SqlDataReader = SqlCommand.ExecuteReader()

        Do While DataReader.Read()
            Jmeno = DataReader("NazevZbozi")
            KratkyPopis = DataReader("KratkyPopis")
            DlouhyPopis = DataReader("DlouhyPopis")
            MOC = DataReader("MOC")
            Link = DataReader("LinkMaloobchod")
            Material = DataReader("Material")
            HlavniObrazek = DataReader("HlavniObrazek")
            Nahled1 = DataReader("Nahled1")
            Nahled2 = DataReader("Nahled2")
            Nahled3 = DataReader("Nahled3")
            Nahled4 = DataReader("Nahled4")
        Loop

        DataReader.Close()
        SqlConnection.Close()

        JmenoLabel1.Text = Jmeno
        JmenoLabel2.Text = Jmeno
        KratkyTextLabel.Text = KratkyPopis
        DlouhyTextLabel.Text = DlouhyPopis
        MOCLabel.Text = "MOC:" & MOC
        LinkLabel.Text = "Link na maloobchod"
        LinkLabel.NavigateUrl = Link
        IDLabel.Text = "ID: " & ID
        MaterialLabel.Text = Material
        MainPic.ImageUrl = HlavniObrazek
        Nahled1PIC.ImageUrl = Nahled1
        Nahled2PIC.ImageUrl = Nahled2
        Nahled3PIC.ImageUrl = Nahled3
        Nahled4PIC.ImageUrl = Nahled4


        
    End Sub

Pokud k tomuto kódu máte připomínku, tak budu jedině rád. pořád se učím :)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Dvě připomínky bych měl :-).

Nechápu důvod, proč načítate hodnoty v cyklu While. Pokud bude ve výstupu více záznamů, budou se zbytečně číst všechny a vždy přepíšou původní hodnoty.

Druhá věc je pak pevné určení ID přímo v řetězci dotazu (nepoužíváte tu proměnnou ID). To bych přidal pomocí parametru.

Z hlavy bych to viděl takto:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim ID As String = 20001
        Dim Jmeno As String
        Dim KratkyPopis As String
        Dim DlouhyPopis As String
        Dim MOC As String
        Dim Link As String
        Dim Material As String
        Dim HlavniObrazek As String
        Dim Nahled1 As String
        Dim Nahled2 As String
        Dim Nahled3 As String
        Dim Nahled4 As String

        Dim ConnectionString = "Server=localhost\SQLEXPRESS;Initial Catalog=Freya;Trusted_Connection=yes;"
        Dim SqlConnection As New SqlConnection(ConnectionString)
        Dim SqlCommand As New SqlCommand("SELECT TOP 1 [NazevZbozi], [KratkyPopis], [DlouhyPopis], [HlavniObrazek], [Nahled1], [Nahled2], [Nahled3], [Nahled4], [MOC], [LinkMaloobchod], [Material] FROM [zbozi] WHERE IdZbozi=@id", SqlConnection)
	SqlCommand.Parameters.AddWithValue("@id", ID) ' pridat parametr

        SqlConnection.Open()
        Dim DataReader As SqlDataReader = SqlCommand.ExecuteReader()

        If DataReader.Read() Then
            Jmeno = DataReader("NazevZbozi")
            KratkyPopis = DataReader("KratkyPopis")
            DlouhyPopis = DataReader("DlouhyPopis")
            MOC = DataReader("MOC")
            Link = DataReader("LinkMaloobchod")
            Material = DataReader("Material")
            HlavniObrazek = DataReader("HlavniObrazek")
            Nahled1 = DataReader("Nahled1")
            Nahled2 = DataReader("Nahled2")
            Nahled3 = DataReader("Nahled3")
            Nahled4 = DataReader("Nahled4")
        Else
	    ' zazny zaznam neexistuje s danym ID, zobrazit tedy chybu nebo cokoliv, co se hodi
	End If

        DataReader.Close()
        SqlConnection.Close()

        JmenoLabel1.Text = Jmeno
        JmenoLabel2.Text = Jmeno
        KratkyTextLabel.Text = KratkyPopis
        DlouhyTextLabel.Text = DlouhyPopis
        MOCLabel.Text = "MOC:" & MOC
        LinkLabel.Text = "Link na maloobchod"
        LinkLabel.NavigateUrl = Link
        IDLabel.Text = "ID: " & ID
        MaterialLabel.Text = Material
        MainPic.ImageUrl = HlavniObrazek
        Nahled1PIC.ImageUrl = Nahled1
        Nahled2PIC.ImageUrl = Nahled2
        Nahled3PIC.ImageUrl = Nahled3
        Nahled4PIC.ImageUrl = Nahled4


        
    End Sub
 
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zdravím,

takže proměnnou ID jsem vyřešil takto

Dim SqlCommand As New SqlCommand("SELECT [NazevZbozi], [KratkyPopis], [DlouhyPopis], [HlavniObrazek], [Nahled1], [Nahled2], [Nahled3], [Nahled4], [MOC], [LinkMaloobchod], [Material] FROM [zbozi] WHERE IdZbozi="&ID, SqlConnection)

a ten cyklus mne nenanapadl, máte pravdu, je to hezčí řešení.

teď řešímm drbný problém, źe jsem si pořídil hosting, ještě před startem práce na webu a mám tam MySQL databázi místo MSSQL, kterou teď používám...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ne! Neskládejte dotazy -> předávejte parametry (jako jsem uvedl v příkladu)!!

Skládání dotazů je bezpečnostní díra. Píšu to tak často, že si na to asi udělám šablonu :-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

aha... ta šablona by pro nás prostoduché byla asi vhodná... Díky moc

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback