Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

Читање и коришћење података из базе

Пре приступа бази мора се отворити конекција према бази наредбом


konekcija.Open(). Такође, када се заврши рад са базом мора се конекција затворити
наредбом konekcija.Close().

Читање податке из могуће је урадити на неколико начина.

Први је коришћењем класе OleDbDataReader, односно креирањем објекта reader:


reader = komanda.ExecuteReader();

Резултат упита (команда) се складишти помоћу конструктора ExecuteReader() у


објекат reader. Блоком while (reader.Read()) пролази се кроз целокупну листу слогова
објекта reader и смештају се тамо где желимо. Кроз колоне табеле се може прођи или
навођењем имена колоне, индекса колоне или коришћењем метода GetString(4),
GetInt32(2)... Број унутар заграда означава индекс колоне. Овде се мора водити рачуна да
се мора познавати тип податка који се узима из базе.

На пример, желимо да узмемо сва имена из колоне Ime и да их сместимо у


comboBox, као и да израчунамо укупну плату и додатке, пролазећи кроз колоне Plata и
Dodaci.

while (reader.Read())

1
{
comboBox1.Items.Add(reader["Ime"]);
или
comboBox1.Items.Add(reader[1]);
или
comboBox1.Items.Add(reader. GetString(1));
...
plata = plata + Convert.ToInt32(reader["Plata"]);
dodaci=dodaci+ Convert.ToInt32(reader["Dodaci"]);
или
plata = plata + Convert.ToInt32(reader[2]);
dodaci=dodaci+ Convert.ToInt32(reader[3]);
или

plata = plata + Convert.ToInt32(reader.GetInt32(2));


dodaci=dodaci+ Convert.ToInt32(reader.GetInt32(3));

Приступ подацима се може извршити и коришћењем својства Rows.Count које


враћа број редова у табели која је резултат упита (команде). Приступ одговарајућем реду у
табели се врши помоћу индекса прве заграде. Друга заграда представља име колоне (као
код матрица).

for (i = 0; i < Ds.Tables[0].Rows.Count; i++)


{
plata = plata +Convert.ToInt32( Ds.Rows[i]["Plata"]);
dodaci = dodaci + Convert.ToInt32(Ds.Rows[i]["Dodaci"]);
}

или, ако се користи објекат Dt класе DataTable:

for (i = 0; i < Dt.Rows.Count; i++)


{
plata = plata +Convert.ToInt32( Dt.Rows[i]["Plata"]);
dodaci = dodaci + Convert.ToInt32(Dt.Rows[i]["Dodaci"]);
}

2
Податке из базе можемо користити на различите начине. Можемо креирати класу и
читањем података из базе доделити им вредности. На пример, креирамо класу Radnik са
одговарајућим параметрима, атрибутима, јавним својствима и методама:
class Radnik
{
private int id;
private string ime;
private int plata;
private int dodaci;
string polozaj;
private bool davalac_krvi;

public int Id
{
get{ return id; }
set{ id = value; }
}

public string Ime


{
get{ return ime; }

set{ ime = value; }


}

public int Plata


{
get { return plata; }

set { plata = value; }


}

public int Dodaci


{
get { return dodaci; }

set { dodaci = value; }


}

public string Polozaj


{
get { return polozaj; }

set { polozaj=value; }
}
public bool Davalac_krvi
{
get
{
return davalac_krvi;
}
set
{
davalac_krvi = value; }
}

3
public override string ToString()
{
return id+" "+ime+" "+plata+" "+dodaci+" "+polozaj+"
"+davalac_krvi;

Такође, креираћемо листу Radnik коју попуњавамо читањем података из базе. Мора
се водити рачуна о типу података, јер су подаци приликом читања из базе типа Object, па
се мора извршити одговарајућа конверзија.
List<Radnik> lista=new List<Radnik>();
for (int i = 0; i < dt.Rows.Count; i++)
{

r = new Radnik();
r.Id = Convert.ToInt32(dt.Rows[i][0]);
r.Ime = Convert.ToString(dt.Rows[i][1]);
r.Plata = Convert.ToInt32(dt.Rows[i][2]);
r.Dodaci = Convert.ToInt32(dt.Rows[i][3]);
r.Polozaj = Convert.ToString(dt.Rows[i][4]);
r.Davalac_krvi = Convert.ToBoolean(dt.Rows[i][5]);
lista.Add(r);
}

Подаци из базе се могу сместити у датотеку на следећи начин:

Креирамо објекат класе StreamWriter.


StreamWriter sw = new StreamWriter("Podaci_iz_baze.txt", true);

Проласком кроз листу и позивом методе ToString() исписујемо податке у датотеци.


foreach (Radnik radnik in lista)
{
sw.WriteLine(radnik.ToString());
}
sw.Close();

You might also like