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
Antonín Výtaha:27.4.2024 23:59

Ahoj kamarádi, mám následující dotaz:

vytvořím si univerzální třídu pro čtení z databáze, která mi vrací v listu načtená data - věděl by někdo, jak z toho listu například přes foreach vytřískat jednotlivé položky co se načetly z databáze? Dejme tomu třeba SPZ vozidla?

class Databaze
    {
        string conectionString = Properties.Settings.Default.fd3_dataConnectionString;

        public List<SqlDataReader> NacistData(string vyhledat)
        {
            List<SqlDataReader> nactenaData = new List<SqlDataReader>();

            using (SqlConnection pripojeni = new SqlConnection(conectionString))
            {
                pripojeni.Open();

                SqlCommand prikaz = new SqlCommand(vyhledat, pripojeni);

                SqlDataReader dataReader = prikaz.ExecuteReader();

                while (dataReader.Read())
                    nactenaData.Add(dataReader);
            }
            return nactenaData;
        }
    }

v Mainu:

private void NacistVozidla()
        {
            Databaze databaze = new Databaze(); // Vytvořit třídu s databázi
            List<SqlDataReader> nactenaData = databaze.NacistData("SELECT SPZ, RIDIC FROM Vozidla"); // Nahrát data z databáze

        foreach (var data in nactenaData)
            {
                ?
                ?
                ?
            }
        }

Nebo na to jdu od začátku blbě? 🙃

Avatar
Odpovedá na Antonín Výtaha
Antonín Výtaha:8.6.2024 23:01

Kdyby se to někomu hodilo, našel jsem nejlepší řešení na této stránce: https://www.dotnetcurry.com/…o-data-table ve výsledku jsem si to upravil ve třídě s databází takto:

class Databaze
    {

        string conectionString = Properties.Settings.Default.fd3_dataConnectionString;

        public DataTable NacistData(string vyhledat)
        {
            DataTable tabulka = new DataTable();
            SqlConnection pripojeni = null;
            try
            {
                pripojeni = new SqlConnection(conectionString);
                SqlCommand prikaz = new SqlCommand(vyhledat, pripojeni);
                pripojeni.Open();

                SqlDataReader dataReader = prikaz.ExecuteReader(CommandBehavior.CloseConnection);

                tabulka.Load(dataReader);
            }

            finally
            {
                pripojeni.Close();
            }

            return tabulka;
        }

        public int PriradIndex(string polozka, DataTable tabulkaDat)
        {
            for (int i = 0; i < tabulkaDat.Columns.Count; i++)
                if (tabulkaDat.Columns[i].ColumnName.ToString() == polozka)
                    return i;

            return -1;
        }
    }

a v Mainu (nebo lépe ve třídě Správce vozidel 😀 ) to mám takto:

private void NacistVozidla()
       {
           Databaze databaze = new Databaze();
           DataTable zaznamy = databaze.NacistData("SELECT SPZ, RIDIC, NAZEV FROM Vozidla");

           int spz = databaze.PriradIndex("SPZ", zaznamy);
           int ridic = databaze.PriradIndex("RIDIC", zaznamy);
           int nazevVozidla = databaze.PriradIndex("NAZEV", zaznamy);

           for (int i = 0; i < zaznamy.Rows.Count; i++)
           {
               Vozidlo vozidlo = new Vozidlo
               {
                   SPZ = zaznamy.Rows[i].ItemArray[spz].ToString(),
                   Ridic = zaznamy.Rows[i].ItemArray[ridic].ToString(),
                   NazevVozidla = zaznamy.Rows[i].ItemArray[nazevVozidla].ToString()
               };
               vozidla.Add(vozidlo);
           }
       }

Kdyby se to někomu hodilo, bude to jedině dobře.

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é 2 správy z 22.