[ edit @ 07.04.2004. 23:39 ] @
Napravio sam jednu klasu koja mi predstavlja Data Acces Layer. Aplikacija koju pravim je Logical N-tier, znaci svi lejeri su na istom racunaru. Business Logic Layer klase bi nasledjivale ovu klasa i dodavale nove funkcije. Sa ovom klasom ustedim mnogo vremena, ali nisam siguran koliko je dobro uradjena, prvenstveno mislim na performanse. Ako neko zna, nek pogleda, pa nek prokomentarise. Code: using System; using System.Data; using System.Data.SqlClient ; using System.Configuration; using System.Collections; namespace appProba { public abstract class sqlBase { // private string stringKonekcija; private SqlConnection _konekcija; private SqlCommand _komanda; private SqlDataAdapter _da; private DataSet _ds; private SqlDataReader _dr; // konstruktor klase public sql() { stringKonekcija = ConfigurationSettings.AppSettings["connStr"]; _konekcija = new SqlConnection(stringKonekcija); _komanda = new SqlCommand(); _da = new SqlDataAdapter(); _komanda.Connection = _konekcija; } protected string connStr { get { if (stringKonekcija == null) { return ""; } return stringKonekcija; } set { stringKonekcija = value; } } protected DataSet runQueryDataSet() { _ds = new DataSet("myDataSet"); _da.SelectCommand = _komanda; _da.Fill(_ds); return _ds; } protected int runNonQuery() { _da.InsertCommand = _komanda; _konekcija.Open(); int rtValue = _da.InsertCommand.ExecuteNonQuery(); _konekcija.Close(); return rtValue; } // podesava parametre i vrijednosti za _konekcija protected void SetParametar(string imeParametra, SqlDbType DbTip, int duzina, object vrijednost) { _komanda.Parameters.Add(imeParametra,DbTip,duzina); _komanda.Parameters[imeParametra].Value = vrijednost; } protected void SetCommandInfo(CommandType Tip, string StdProName) { _komanda.CommandType = Tip; _komanda.CommandText = StdProName; } protected SqlDataReader runQueryDataReader() { _konekcija.Open(); SqlDataReader _dr = _komanda.ExecuteReader(CommandBehavior.CloseConnection); return _dr; } protected void _ResetCommand() { _komanda.Dispose(); _da.Dispose(); _komanda = new SqlCommand(); _da = new SqlDataAdapter(); _komanda.Connection = _konekcija; } protected object runScalar() { _konekcija.Open(); object result = _komanda.ExecuteScalar(); _konekcija.Close(); return result; } } } primjer BLL klase..... Code: public class Proizvod: sqlBase { public string id; public string opis; public Proizvod(string ID, string OPIS) { } public DataSet GetById(string idProizvoda) { this._ResetCommand(); this.SetParametar("@Sifra",SqlDbType.Char , 50,idProizvoda); this.SetCommandInfo(CommandType.StoredProcedure, "_GetById") // "_GetById" je ime Stored proc. na SQL serveru DataSet ds = this.runQueryDataSet(); return ds; } } |