Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 5. diel - SqlDataReader a pripojená databáza v C# .NET

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
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Odpovedá na JOF
Michal Štěpánek:25.4.2014 8:11

Ano, připojení ComboBoxu na datový zdroj se dělá u odpojeného přístupu, ale myslím si, že stálé připojení na databázi je k ničemu, jen to zbytečně zvyšuje nároky na aplikaci, potažmo na síť, nehledě k tomu, že když aplikaci využívá více lidí najednou, je pak jednodušší ohlídat, aby si vzájemně "nepřekáželi". Spojení do DB by mělo být otevřeno jen po dobu nezbytně nutnou k provedení příkazu, jinak by mělo být zavřeno.

Odpovedať
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovedá na Michal Štěpánek
Marian Benčat:26.12.2015 17:41

Připojení do DB se ale ihned po ukončení usingu (případně close()) neukončuje. .NET si vnitřně všechny SQLConnection pooli a v okamžiku, kdy se zavolá Close() tak ho pouze navrátí zpět do connection poolu a ještě ho nějakou dobu nechává otevřené a pak ho recykluje. Stejný connection pool pak zjistí na základě connection stringu. Proto není také nutné nad SQL connection dělat vlastní pooling a ničemu nevadí na každý dotaz dělat new SQLConnection().. tedy ,,ničemu".

Odpovedať
Totalitní admini..
Avatar
Odpovedá na Marian Benčat
Marian Benčat:26.12.2015 17:51

Je ale samozřejmě dobré tam ten connection ihned vracet, jakmile se daná operace dokončí.

Odpovedať
Totalitní admini..
Avatar
Karel Labonek:25.2.2018 15:24

Zdravím,
možná vzhledem k výše řečenému je to zbytečný dotaz, ale nějak mi v příkladech chybí uzavření připojení "pripojeni.Close()" s databází začínám tak jen pro jistotu :-) .

Avatar
jozef_i
Člen
Avatar
Odpovedá na Karel Labonek
jozef_i:25.2.2018 17:12

To sa vyriešilo použitím klauzuly "using" pre "pripojeni", po vyskočení z bloku using, a automaticky disposne....

Avatar
Odpovedá na jozef_i
Karel Labonek:26.2.2018 19:30

Jasné, děkuji za odpověď :-) .

Avatar
Marek Jakoubek:26.5.2020 21:40

Jestli bys chtěl o tomhle podrobnější informace, tak doporučuji zdejší článek o souborech: https://www.itnetwork.cz/…atch-finally
Sice se to netýká úplně databází, ale stejně :-) !

Avatar
jan široký
Člen
Avatar
jan široký:28.8.2020 12:18

Ahoj
dataReader po mne chce taky

dataReader.Close()

nebo uzivani v ramci using.

Editované
Avatar
Jan Füri
Člen
Avatar
Jan Füri:19.5.2023 11:42

kdyby někdo vyzkoušel '; DROP TABLE Word -- tak potom se musí resetovat VS. nepustí vás to vytvořit novou tabulku [Word] a také nepůjde updatovat novou databázi. :D

Editované
Avatar
Jozef Vendel
Člen
Avatar
Jozef Vendel:7.6.2023 22:01
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;

namespace ExampleNamespace
{
    public class ExampleClass
    {
        public List<Person> RetrievePersons()
        {
            string connectionString = "YourConnectionString";
            string sqlQuery = "SELECT * FROM Person";

            List<Person> persons = new List<Person>();

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                using (SqlCommand command = new SqlCommand(sqlQuery, connection))
                {
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            int id = (int)reader["Id"];
                            string name = (string)reader["Name"];
                            int age = (int)reader["Age"];

                            Person person = new Person(id, name, age);
                            persons.Add(person);
                        }
                    }
                }

                connection.Close();
            }

            return persons;
        }
    }

    public class Person
    {
        public int Id { get; private set; }
        public string Name { get; private set; }
        public int Age { get; private set; }

        public Person(int id, string name, int age)
        {
            Id = id;
            Name = name;
            Age = age;
        }
    }
}
Posledné komentáre sú na spodnej časti poslednej stránky.
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é 10 správy z 22.