NOVINKA: Začni v IT jako webmaster s komplexním akreditovaným online kurzem Tvůrce WWW stránek. Zjisti více:
NOVINKA: Staň se datovým analytikem a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

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
Nejnovější komentáře jsou na konci poslední stránky.
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
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
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
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
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....

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

Editováno
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
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;
        }
    }
}
Nejnovější komentáře jsou na konci poslední stránky.
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.