NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!

Diskuze – Lekce 5 - SqlDataReader a připojená databáze v C# .NET

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá 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.

Odpovědět
25.4.2014 8:11
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá 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".

Odpovědět
26.12.2015 17:41
Totalitní admini..
Avatar
Odpovídá 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čí.

Odpovědět
26.12.2015 17:51
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 :-) .

 
Odpovědět
25.2.2018 15:24
Avatar
jozef_i
Člen
Avatar
Odpovídá 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....

 
Odpovědět
25.2.2018 17:12
Avatar
Odpovídá na jozef_i
Karel Labonek:26.2.2018 19:30

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

 
Odpovědět
26.2.2018 19:30
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ě :-) !

 
Odpovědět
26.5.2020 21:40
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.

Editováno 28.8.2020 12:18
 
Odpovědět
28.8.2020 12:18
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

Editováno 19.5.2023 11:44
 
Odpovědět
19.5.2023 11:42
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;
        }
    }
}
 
Odpovědět
7.6.2023 22:01
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 22.