I have a connection class laki this:
public static OleDbConnection connection = new OleDbConnection();
public string sorgu;
public static string server;
public static string userId;
public static string catalog;
public static string password;
public DataSet ds = new DataSet();
public bool Open()
{
try
{
if (connection.State != ConnectionState.Open)
{
connection.ConnectionString = "Provider=SQLOLEDB.1" +
";Password=" + password +
";Persist Security Info=True" +
";User ID=" + userId +
";Initial Catalog=" + catalog +
";Data Source=" + server;
connection.Open();
return true;
}
else
{
return true;
}
}
catch (Exception ex)
{
MessageBox.Show("Sistem Mesajı:" + ex.Message, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}
public void CloseConnection()
{
if (connection.State == ConnectionState.Open)
{
connection.Close();
}
}
public DataTable Dt(string query)
{
DataTable dt = new DataTable();
if (Open())
{
OleDbDataAdapter da = new OleDbDataAdapter(query, connection);
try
{
da.Fill(dt);
}
catch (Exception ex)
{
MessageBox.Show("Sistem Mesajı:" + ex.Message, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
//baglanti.Close();
return dt;
}
and this is my code which I get the values in a windows form
ConnectionClassOleDb cc = new ConnectionClassOleDb();
sorgu = " SELECT * FROM tblFiyatlandirma WHERE " +
" musteriNo=" + musteriNo +
" AND musteriTipId=" + musteriTipId;
nudSiparisMetresi.Value = Convert.ToDecimal(cc.Dt(sorgu).Rows[0]["siparisMetresi"]);
nudKar.Value = Convert.ToDecimal(cc.Dt(sorgu).Rows[0]["kar"]);
nudKumasEni.Value = Convert.ToDecimal(cc.Dt(sorgu).Rows[0]["kumasEni"]);
nudMamulFire.Value = Convert.ToDecimal(cc.Dt(sorgu).Rows[0]["mamulFire"]);
nudMamulKumasKari.Value = Convert.ToDecimal(cc.Dt(sorgu).Rows[0]["mamulKumasKar"]);
nudNakliyeUcreti.Value = Convert.ToDecimal(cc.Dt(sorgu).Rows[0]["nakliye"]);
nudKomisyon.Value = Convert.ToDecimal(cc.Dt(sorgu).Rows[0]["komisyon"]);
nudTarakEni.Value = Convert.ToDecimal(cc.Dt(sorgu).Rows[0]["tarakEni"]);
nudTarakNo.Value = Convert.ToDecimal(cc.Dt(sorgu).Rows[0]["tarakNo"]);
nudTarakGecisi.Value = Convert.ToDecimal(cc.Dt(sorgu).Rows[0]["tarakGecisi"]);
nudAtkiFiyat.Value = Convert.ToDecimal(cc.Dt(sorgu).Rows[0]["atkiFiyati"]);
nudAtkiSikligi.Value = Convert.ToDecimal(cc.Dt(sorgu).Rows[0]["atkiSikligi"]);
nudAnalizNo.Value = Convert.ToDecimal(cc.Dt(sorgu).Rows[0]["analizNo"]);
the codes are work but in every cc.Dt(sorgu).Rows[0] row cc clas is going to connection class again and doing a new query. what is wrong?
Because every time you call ‘Dt’ you create a new datatable and adapter and fill the datatable with the adapter. This will cause the query to be executed on each call.
You should store the returned DataTable in a local variable and do your operations like ‘Rows’ on that instead of calling your DB class every time.
So:
and then use
instead of