Forum
hangisi daha sağlıklı olur ?
Sorunu tam anlayamadım. Detaylandırırsan daha net bir cevap verebiliriz. Ama yazdığın kelimeleri kullanarak bir kaç şeyden bahsedeyim.
app.config üzerinde tanımlayacağın değişkenleri değiştirdiğnide projeni build edip yeni bir dll oluşturman gerekmez. Dolayısyla contact mail adresi, birim fiyat vs. gibi değişmesi muhtemel değişkenleri burada tutman mantıklı olabilir.
Static string metoda gelince, bu da neticede .cs tarafında yer aldığından derlenmesi (build) ve olası değişikliklerde yeniden build edilip yeni dll'in servera atılmasını gerektirir. public static metodlara projenin heryerinden erişebilir, böylece kod tekrarını engelleyebilirsin.
şimdi durum şöyle
ayrı bir class altında örnek baglantı adında bir klass oluşturup , onun altında public metodla sqlin string veri yolunu vermeyi düşünüyordum. yani bunu daha önce access ile dönem projesinde yaptım.
şimdi sql de hazırlıyorum. app.conf olayı var.
mesela database bağlamak için
public class Baglanti
{
public static string CON
{
get { return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\dataDB.mdb" ; }
}
}
ama şimdi başka bir yöntemle deniyorum
lakin şu
app.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="connectiondb" value="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MedicalDB.mdf;Integrated Security=True;" />
</appSettings>
</configuration>
ayrıca tekrardan ayrı bir class altında oluşturdum bağlantı yolunu belirliyorum ve bağlantıyı açıyorum, daha sonra lat forumlarda bu metodu çağırarak bağlantı oluşturucam
class DBConfigs
{
public static SqlConnection DataCon()
{
string constring = ConfigurationSettings.AppSettings["connectiondb"];
SqlConnection con = new SqlConnection(constring);
con.Open();
return con;
}
}
yani bu ikinci yol iyimidir sizce ?
diploma tezi için proje aldım, yani iyi iş yapmak istiyorum.
ayrıca her değişken kaydı için ayrı bir klass oluşturucam, örnek olarak personel kayıtları için prsnrec adında ve burada değişkenleri get set metodlarıyla bellekte tutup daha sonra txtelerden alınan bilgilerle değerlendiricem tabi aynı classta üreteceğim kayıtekleme, kayıtsilme metodlarıyla. sizce böylesi daha iyi olmazmı . yani bu ciddi anlamda ilk prof deneyimim. pek bir fikrim yok akış diagralarını hazırladım artık iş programlamaya kaldı ama iyi ve hatasız bir temelden başlamam lazım. bu açıdan fikirleriniz önemli.
Merhaba,
class ayırman tabiki güzel olmuş fakat benim tavsiyem bu dilme ekleme işlemlerinide SQL prosedürleriyle yapman. Bu hem profesyonel manada iyi bir hız kazandırır hem de kolaylık sağlar.
ayrıca con.open(); ile açtığın bağlantıyıda kapatmayı unutma
SQL ile pek çalışmışlığım yok , derslerden gördüğüm queryleri az çok hatırlıyorum da , prosedürsel işlemler sql server tarafından yapılan hani create prosedure gibi işlemler mi ?
peki ben bu işlemleri mesella buttonclick event altında yapsam kötü mü olur ?
sqlcommad record nesnesiyle, comut satırını göndersem mesela insert into tabloadı gibi ?
Merhaba,
SQL tarafında ki prosedürleri kullanmak daha hızlı ve kolay bir çözümdür. ASP.NET altından direk olarak query gönderebilirsin ama profesoneliteye baktığında bu daha iyi bir seçim olduğunu söyleyebilirim. Fakat ikisinide kullanabilirsin.
Örnek vermek gerekir ise;
SqlConnection con;
SqlCommand cmd;
con=new Sqlconnection ("Data source=localhost;Initial Catalog=dbadı;IntegratedSecurity=true);
cmd=new Sqlcommand("Prosedürismin",con);
cmd.CommandType=CommandType.StoredProcedure;
yani diyelimki bir procedure oluşturuyorum
Use MedicalDB
go
create procedure sqlkayıtla
( patname varchar (20),
pacientsurname varchar (30)
)
as begin
inser into Pacients ( Patname , Patsurname ) values (@patname , @patsurname)
end
şimdi bunu yazdım , sizined berlittiğniz üzre bir sql command kurucam vs2008 tabanında programlama kısmında sıra
sql bağlantımı çağırdım
|
SqlConnection baglan = DbConfig.DataCon(); |
ve
SqlCommand komut;
komut = new SqlCommand("sqlkayıtla", baglan);
komut.CommandType = CommandType.StoredProcedure;
yani böyle yazsam çalışır mı ?
yeniyimde kafamdan anlamaya çalışıyorum
teşekkürler.
Merhaba,
SQL bağlantın doğru ise çalışır.ve Prosüdr tanimlarindaki @ işaretlerinide ekler isen..
Örnek.
Use
car
go
create
procedure sqlkayitla
(
@MusteriAdi
nchar (10),
@MusteriSoyadi
nchar (20)
)
as
begin
insert
into musteri( MusteriAdi , MusteriSoyadi ) values (@MusteriAdi , @MusteriSoyadi)
end
pekala ben bunu mesela kendi pcmdeki sqlden yaptığımda, bir başka pcden projeyi açıp build ettiğimde sql hata verir mi ?
Merhaba,
aynı version ise vermez tabiki . Dilersen yazdığın quesyleri SQL uzantılı olarak kaydedip aktarırsın