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 – 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
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ě? 🙃

 
Odpovedať
27.4.2024 23:59
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.

 
Odpovedať
8.6.2024 23:01
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.