Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Formiranje niza (matrice) podacima iz baze?

[es] :: .NET :: Formiranje niza (matrice) podacima iz baze?

[ Pregleda: 2128 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

SuDar407

Član broj: 162091
Poruke: 57
*.dynamic.isp.telekom.rs.



Profil

icon Formiranje niza (matrice) podacima iz baze?08.04.2011. u 00:17 - pre 159 meseci
Imamo recimo bazu (Baza.mdb), u njoj tabelu (Tabela1) i u okviru tabele 4 kolone (ID, Ime, Prezime, Telefon).
Primer:

Id Ime Prezime Telefon
1 Pera Petrovic 11111
2 Zika Zikic 2222
4 Pera Petrovic 33333
5 Misa Misic 77777
11 Zika Zikic 85444
.....
....
....

Pokusacu da objasnim sta me muci na gore navedenim podacima.
Kako je moguce da se podaci iz baze upisu u matricu. Ta matrica ima dimenzije n x 3 (bez ID), znaci zanima me samo Ime, Prezime i Telefon.
Napominjem da unapred "znam" koliko ima lica upisanih u bazu i da je njihov broj promenljiv. Radim u VB.Net 2008!

Unapred zahvalan!
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Formiranje niza (matrice) podacima iz baze?08.04.2011. u 00:39 - pre 159 meseci
Zar ti nije prakticnije da koristis DataTable? U sustini, to je nesto kao nabudzena matrica :) A mozes direktno iz baze dobiti DataTable objekat popunjen.
 
Odgovor na temu

SuDar407

Član broj: 162091
Poruke: 57
*.dynamic.isp.telekom.rs.



Profil

icon Re: Formiranje niza (matrice) podacima iz baze?08.04.2011. u 00:46 - pre 159 meseci
Prakticnije mi da baratam sa matricama. Da li Shadowed mozda imas resenje za ovaj moj problem. Vec par dana googlam i nista za ovaj moj slucaj nisam nasao.
 
Odgovor na temu

lonelyrider_44
Zrenjanin

Član broj: 42310
Poruke: 445
109.94.104.*



+20 Profil

icon Re: Formiranje niza (matrice) podacima iz baze?08.04.2011. u 01:02 - pre 159 meseci
Morao bi ručno da prebacuješ podatke iz dataseta (ili datatable ne znam kako se to radi u VB-u, ali ne verujem da se razlikuje od C#) u matricu. Jer kontam da nema nekog drugog načina, adapter koji izvršava upit bazi, vraća dataset (ili datatable) i na osnovu toga onda treba da napraviš matricu. Ali ako to znaš da uradiš (da manipulišeš datasetom/datatable-om) onda je malo suvišno raditi sa matricom, ali može.
 
Odgovor na temu

SuDar407

Član broj: 162091
Poruke: 57
*.dynamic.isp.telekom.rs.



Profil

icon Re: Formiranje niza (matrice) podacima iz baze?08.04.2011. u 01:08 - pre 159 meseci
Ucim, nov sam u ovome i krenuo sam nesto da "muljam", ali ce mi biti potrebna i vasa pomoc!
Code:


  Dim con As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="c:\\Baza.mdb") ' konekcija na bazu
  Dim str As String
               str = " select Ime,Prezime,Telefon from Tabela1 "
        Try
            con.Open()
            Dim com1 As New OleDb.OleDbCommand(str, con)
            Dim dr As OleDb.OleDbDataReader = com1.ExecuteReader
            While dr.Read

               PO MOJOJ LOGICI, OVDE BI ISAO KOD ZA UPIS U MATRICU, ALI KAKO????               

            End While
            con.Close()
           
        Catch ex As Exception
            con.Close()
        End Try
        Return MATRICA
 
Odgovor na temu

lonelyrider_44
Zrenjanin

Član broj: 42310
Poruke: 445
*.com
Via: [es] mailing liste



+20 Profil

icon Re: Formiranje niza (matrice) podacima iz baze?08.04.2011. u 01:47 - pre 159 meseci
Problem koji mi se čini da nastaje na ovaj način, jeste sledeći. Da bi
deklarisao niz, ili matricu, moraš pri instanciranju da navedeš koliko će
imati elemenata. A to ne možeš da saznaš iz datareader-a, osim ako ne bi
jednom prošao kroz ceo while samo da bi prebrojao koliko imaš redova, pa
tek onda još jedan while da prebaciš u matricu te podatke. Zato probaj da
umesto OleDbDataReader-a koristiš adapter.
Code:


Dim con As New  
OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data  
Source="c:\Baza.mdb") ' konekcija na bazu
Dim ds As New Dataset()
Dim adapter As New OleDb.OleDbDataAdapter()
Dim command As New OleDb.OleDbCommand()

command.Connection = con
command.CommandText = " select Ime,Prezime,Telefon from Tabela1 "

adapter.SelectCommand = command

adapter.Fill(ds)


Na ovaj način, dobio si podatke iz tablee u dataset, i sada možeš da vidiš
koliko je redova vratio upit na sledeći način:
ds.Tables[0].Rows.Count
A čitaš iz dataseta :
ds.Tables[0].Rows[indexReda].ItemArray[indexPodatka]
indexPodatka: 0-ime,1-prezime,2-telefon, ovi indexi zavisi od broja i
redosleda polja koje si naveo u select naredbi.

primer:
ds.Tables[0].Rows[0].ItemArray[2].ToString() - vraća ti broj telefona
prvog reda u tabeli.

Ali generalno ima tu i drugi problem sa takvom matricom...jer to i nije
matrica nego niz čiji svaki element ima tri stringa.
Ja bi to onda ovako uradio:

Code:

class Osoba{
    public string Ime;
    public string Prezime;
    public string Telefon;
}

//a kasnije u kodu definišeš niz
Osoba[] nizOsoba = new Osoba[ds.Tables[0].Rows.Count];

i na kraju prebacivanje iz dataseta u niz (nakon što je povučeno iz baze):
for(int i =0;i<ds.Tables[0].Rows.Count;i++)
{
    nizOsoba[i].Ime = ds.Tables[0].Rows[i].ItemArray[0].ToString();
    nizOsoba[i].Prezime = ds.Tables[0].Rows[i].ItemArray[1].ToString();
    nizOsoba[i].Telefon = ds.Tables[0].Rows[i].ItemArray[2].ToString();
}


Ovo je u C#, ne poznajem baš kako treba sintaksu VB-a

--
Using Opera's revolutionary email client: http://www.opera.com/mail/
 
Odgovor na temu

SuDar407

Član broj: 162091
Poruke: 57
*.dynamic.isp.telekom.rs.



Profil

icon Re: Formiranje niza (matrice) podacima iz baze?08.04.2011. u 22:07 - pre 158 meseci
Hvala lonelyrider_44 na odgovoru. Nisam stigao do sada da pogledam, odoh sada da "lupam glavu"! Javljam sta sam uradio!
Pozdrav!
 
Odgovor na temu

SuDar407

Član broj: 162091
Poruke: 57
*.dynamic.isp.telekom.rs.



Profil

icon Re: Formiranje niza (matrice) podacima iz baze?09.04.2011. u 14:11 - pre 158 meseci
Proradilo!!! Evo koda u VB-u:
Code:

 Dim con As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="c:\\Baza.mdb") ' konekcija na bazu
        Dim ds As New DataSet()
        Dim adapter As New OleDb.OleDbDataAdapter()
        Dim command As New OleDb.OleDbCommand()
        Dim Ime, Prezime As String
        Dim Telefon As Integer
        command.Connection = con
        command.CommandText = " select Ime,Prezime,Telefon from Tabela1 "
        adapter.SelectCommand = command
        adapter.Fill(ds)
        Dim nizOsoba(,) As String
        ReDim nizOsoba((brOsoba - 1), 2)
        For i As Integer = 0 To (Osoba - 1)
            Ime = ds.Tables(0).Rows(i).ItemArray(0).ToString()
            Prezime = ds.Tables(0).Rows(i).ItemArray(1).ToString()
            Telefon = ds.Tables(0).Rows(i).ItemArray(2).ToString()
            nizOsoba(i, 0) = Ime
            nizOsoba(i, 1) = Prezime
            nizOsoba(i, 2) = Trim(Telefon)
        Next
        Return nizOsoba


Da ne bih otvarao novu temu, kako je moguce da iz baze prebrojim koliko se razlicitih imena pojavljuje u bazi ili matrici (na primeru sa pocetka, imamo 3 imena koja se ponavljaju)?
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Formiranje niza (matrice) podacima iz baze?09.04.2011. u 16:17 - pre 158 meseci
Code (sql):

SELECT COUNT(DISTINCT column_name) FROM TABLE_NAME

 
Odgovor na temu

SuDar407

Član broj: 162091
Poruke: 57
*.dynamic.isp.telekom.rs.



Profil

icon Re: Formiranje niza (matrice) podacima iz baze?09.04.2011. u 18:01 - pre 158 meseci
Nije mi jasno, gde gresim?
Code:

Dim broj As Integer
        Dim SQLResult As Integer
        Dim connStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" c:\\Baza.mdb"
        Dim dbConnection As OleDbConnection = New OleDbConnection(connStr)
        Dim SQL As New OleDbCommand
        dbConnection.Open()
        SQL.Connection = dbConnection
        SQL.CommandText = "SELECT COUNT(DISTINCT Ime) FROM Tabela1"

        SQLResult = SQL.ExecuteScalar <<<<<< ovde mi izbacuje gresku "Syntax error (missing operator) in query expression 'COUNT(DISTINCT Ime)'.

        broj = SQLResult
        Return broj
 
Odgovor na temu

SuDar407

Član broj: 162091
Poruke: 57
*.dynamic.isp.telekom.rs.



Profil

icon Re: Formiranje niza (matrice) podacima iz baze?09.04.2011. u 19:13 - pre 158 meseci
Nasao sam gresku!

Code:

SQL.CommandText = "SELECT COUNT (Ime) FROM (SELECT DISTINCT Ime FROM Tabela1)"


Hvala vam svima na pomoci!
Pozdrav!!!
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Formiranje niza (matrice) podacima iz baze?09.04.2011. u 22:37 - pre 158 meseci
Greska je zapravo da Access ne podrzava onu varijantu (dok MS SQL Server i Oracle podrzavaju).
 
Odgovor na temu

[es] :: .NET :: Formiranje niza (matrice) podacima iz baze?

[ Pregleda: 2128 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.