Veľkonočná akcia je tu a s ňou aj extra kredity ZADARMO na náš interaktívny e-learning. Dobij si teraz kredity a posuň sa vo svojej kariére vpred!
Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

Diskusia – 18. diel - MS-SQL - Dátové typy podrobnejšie

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
František Střelka:19.9.2019 6:01

Po dokončení sekce jsem tápal, jak databázi "propojit" s logickou vrstvou aplikace (ve VB .NET) a také, jak SQL zakomponovat do OOP. Zkombinoval jsem několik návodů jak se mi to (laicky :-) ) zdálo nejvhodnější. Možná to někomu pomůže, ale budu hlavně rád, když mi poradíte, co je třeba doladit, případně zda volit zcela jinou logiku.
V kódu je čtení/zápis dat z/do tabulky s uživateli, (jako v předchozích lekcích). Setříděná data načítám do listu() s instancemi třídy Uzivatel a s tím dál již pracuji klasicky v OOP.
Module1.vb

Dim uzivatele As New Uzivatele()
Try
     uzivatele.NactiDataSQL()
Catch ex As Exception
     Console.WriteLine("Nepodařilo se načíst data z databáze!{0}Chyba: {1}", vbCrLf, ex.Message)
End Try
Try
     uzivatele.ZapisNovehoUzivateleDoSQL("Fanda", "email@domena.cz")
Catch ex As Exception
     Console.WriteLine("Nepodařilo se zapsat data do databáze!{0}Chyba: {1}", vbCrLf, ex.Message)
End Try

Uzivatele.vb

Imports System.Data.SqlClient

Public Class Uzivatele
    Property listUzivatelu As List(Of Uzivatel)
    Private conn As SqlConnection
    Private connectionString As String
    Private comm As SqlCommand
    Private query As String

    Public Sub New()
        ConnectionString = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DBF\RedakcniSystem.mdf;Integrated Security=True" ' s relativní cestou
        ' Absolutní cesta: "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=Y:\Mfdesign\VBnet_aplikace\Vyuka\ITnetwork\MS_SQL\Lekce7azDotazyPresViceTabulekRedakcniSys\Lekce7_az_RedakcniSystem\DBF\RedakcniSystem.mdf;Integrated Security=True"
        listUzivatelu = New List(Of Uzivatel)
    End Sub
    ''' <summary>
    ''' Naplní llistUzivatelu setříděnými daty z SQL
    ''' </summary>
    ''' <remarks>třída Uzvatel má stejné Property jako jsou názvy sloupců v SQL tabulce, vč. id </remarks>
    Public Sub NactiDataSQL()
        listUzivatelu.Clear()
        query = "SELECT * FROM [Uzivatele] ORDER BY [Prezdivka]"
        Using conn = New SqlConnection(connectionString)
            Using comm = New SqlCommand()
                comm.Connection = conn
                comm.CommandType = CommandType.Text
                comm.CommandText = query
                conn.Open()
                Dim dr = comm.ExecuteReader()
                While dr.Read()
                    listUzivatelu.Add(New Uzivatel(dr("Id"), dr("Prezdivka"), dr("Email")))
                End While
            End Using
        End Using
    End Sub
    ''' <summary>
    ''' Zápis nového řádku (uživatele)
    ''' </summary>
    ''' <remarks> </remarks>
    Public Sub ZapisNovehoUzivateleDoSQL(prezdivka As String, email As String)
        query = "INSERT INTO [Uzivatele] ([Prezdivka], [Email]) VALUES (@prezdivka, @email)"
        Using conn = New SqlConnection(connectionString)
            Using comm = New SqlCommand()
                comm.Connection = conn
                comm.CommandType = CommandType.Text
                comm.CommandText = query
                comm.Parameters.AddWithValue("@prezdivka", prezdivka)
                comm.Parameters.AddWithValue("@email", email)
                conn.Open()
                comm.ExecuteNonQuery()
            End Using
        End Using
    End Sub
 
Odpovedať
19.9.2019 6:01
Avatar
Jaroslav Drobek:31.10.2022 15:51

Hodnocení:

  • Poprvé se setkávám s označením "desetinná" pro čísla vlevo od desetinné čárky, ehm, tečky..
  • Přibližná čísla: výklad zavádějící a nejasný, příklad nicneukazující..
  • "tzn. Na" má být s malým "n" po tečce.
  • V pravých sloupcích tabulek by "max" mohlo být odděleno čárkou (v polích, kde chybí kroužek nad "u").
  • "..ukládání binárních souborů, například obrázků.."
  • Ostatní datové typy: na základě kódu z příkladu vznikne tabulka s jedním záznamem - v ukázce jsou tři.
 
Odpovedať
31.10.2022 15:51
Avatar
David Novák
Tvůrce
Avatar
Odpovedá na Jaroslav Drobek
David Novák:5.10.2023 7:44

Ahoj Jaroslave, děkujeme za podnět. Lekci jsem předal k aktualizaci

 
Odpovedať
5.10.2023 7:44
Avatar
Petr Vocel
Tvůrce
Avatar
Petr Vocel:15.4.2024 17:14

Chybí mi praktické ukázky použití typu Timestamp a Uniqueidentifier k čemu a kdy. Jak Uniqueidentifier unikátní. Id je také unikátní, když se doplňuje automaticky.

 
Odpovedať
15.4.2024 17:14
Avatar
Marek Němec
Člen
Avatar
Marek Němec:28.8.2024 13:01

Zajímalo by mě, zda budeme databázi používat i na větší soubory (gigabytové zip složky) a pokud ano, tak jaký datový typ jim přiřadit?

 
Odpovedať
28.8.2024 13:01
Avatar
Pavel Novák
Člen
Avatar
Pavel Novák:6. marca 13:07

Přesná čísla, Přibližná čísla - my jsme na základní škole používali přirozená a reálná, ale to bylo v minulém tisíciletí, třeba je to teď jinak.

Řetězce s podporou unikódu
"Lze tak ukládat národní znaky, například diakritiku."
Bylo by dobré vysvětlit co, kde a jak nastavit, aby to opravdu fungovalo. V uvedeném příkladu je vložen řetězec 'ěščřžýáíé', ale výstupem je řetězec 'ešcržýáíé'.

 
Odpovedať
6. marca 13:07
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 6 správy z 16.