public List <T> GetAll() { List <T> result = new List <T>(); /*blok "using" automatski poziva funkciju "Dispose" pri njegovom završetku. * Objekat u bloku "using" mora implementirati interface "IDisposable", * koji obavezuje da se implementira funkcija "Dispose"*/ using (SqlConnection k = Konekcija.getKonekcija()) { //type.Name sadrži naziv klase T //"select * from Student" string sql = "select * from " + type.Name; SqlCommand cmd = new SqlCommand(sql, k); //izvršava komandu cmd koja je tipa Query (select) SqlDataReader rdr = cmd.ExecuteReader(); //funkcija Read promjera pokazivač na record/zapis //ako Read vrati "false" znači da pokazivač došao na kraj, tj. ne pokazuje više niti na jedan red while (rdr.Read()) { //funkcija NapraviT radi slijedeće //1. pravi instancu klase T, //2. uzima vrijednosti iz trenutnog zapisa, //3. setuje vrijednosti trenutnog zapisa u instancu T T newT = NapraviT(rdr); result.Add(newT); } } return(result); }
public void Delete(T t) { using (SqlConnection k = Konekcija.getKonekcija()) { //"delete from Student where Id = 4" string sql = "delete from " + type.Name + " where Id = " + t.Id; SqlCommand cmd = new SqlCommand(sql, k); cmd.ExecuteNonQuery(); } }
public void Insert(T t) { string kolone = ""; foreach (PropertyInfo p in type.GetProperties()) { //U tabeli je uključen Identity (autoinkrement) za kolonu Id, pa je potrebno preskočiti ovu kolonu if (p.Name == "Id") { continue; } if (kolone.Length > 0) { kolone += ","; } kolone += p.Name; } string vrijednosti = ""; foreach (PropertyInfo p in type.GetProperties()) { if (p.Name == "Id") { continue; } if (vrijednosti.Length > 0) { vrijednosti += ","; } object v = p.GetValue(t); vrijednosti += "'" + v + "'"; } //"Insert into Student(Ime,Prezime,BrojIndeksa,IsDeleted) values ('A','B','IB130434','False')" string sql = "insert into " + type.Name + "(" + kolone + ") values (" + vrijednosti + ")"; using (SqlConnection k = Konekcija.getKonekcija()) { SqlCommand cmd = new SqlCommand(sql, k); cmd.ExecuteNonQuery(); } }
public T GetById(int id) { using (SqlConnection k = Konekcija.getKonekcija()) { //"select * from Student where Id = 4" string sql = "select * from " + type.Name + " where id = " + id; SqlCommand cmd = new SqlCommand(sql, k); SqlDataReader rdr = cmd.ExecuteReader(); if (rdr.Read()) { T newT = NapraviT(rdr); return(newT); } } return(null); }