İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

C# Dinamik ConnectionString Oluşturma Yardım..

Champion7818.05.20118 cevap5.726 görüntüleme
2006'den beri1.716 mesaj
#1
Merhaba arkadaşlar, yepyeni bir soru ile karşınızdayım :) Bitirme projem bitti bitiyor :) Şimdi ufak bir veritabanı problemim var. SQL Server 2008 ve LinQ kullanıyorum. Veritabanına erişmek için DataClasses1DataContext sınıfından bir nesne türetip onu kullanıyorum.

Normalde programı derlemeden önce .dbml dosyamın içerisinde bu sınıfın kullanacağı connection stringi belirleyebiliyorum. Bunun yanında istediğim zaman bu sınıftan üretilen bir nesnenin connection stringini de belirleyebiliyorum. Şöyle ki:

DataClasses1DataContext data=new DataClasses1DataContext();
data.Connection.ConnectionString="..... vs";

Şimdi mesele şurda, diyelim ki ben programı ilk defa çalıştırıyorum, farklı bir bilgisayarda. Veritabanı bağlantısı için gerekli olan sunucu adı, sql adı, db adı vs. girildi. Ben bunları bi txt dosyasına kaydettim. Program her açılışında benim bu txt dosyasındaki bilgileri .dbml dosyam içerisindeki connection string özelliğine yazmam gerekiyor, veya üstte de yaptığım gibi her oluşturduğum nesnenin connection stringine değer atamam gerekiyor (ki bu işlem çoooook uzun olur, bir sürü nesne var).

Kısacası, dbml dosyasının içerisindeki connection stringi program açıldığında nasıl güncelleyebilirim? (Çok mu karışık oldu :))
Cevaplar
2006'den beri180 mesaj
#2
heryeri ayrı ayrı düzeltmek yerine, projeniz web mi yoksa windows form mu bilemiyorum ama config dosyasından tek bir con. string belirtilip bunun kullanılmasını sağlayabilirsiniz. linq da otomatik olarak oraya bunu yazıyordu diye hatırlıyorum siz elle manuel bişeyler yazdırmadıysanız.
Champion78 Konuyu açan
2006'den beri1.716 mesaj
#3
proje win projesi de, conf dosyasına linq otomatik yazmış evet; ancak ben bu conf dosyasına program çalışırken nasıl bi şeyler yazdırabilirim ki :s
2010'den beri174 mesaj
#4
Buraya bi göz atın isterseniz bekli işe yarar.
Champion78 Konuyu açan
2006'den beri1.716 mesaj
#5
mstfcck dedi: ↑
Buraya bi göz atın isterseniz bekli işe yarar.
web uygulaması yapmıyorum ama sağ olasın yine de, problemi uzun yolla hallettim mecburen :)
2009'den beri15 mesaj
#6
SqlConnectionStringBuilder cb = new SqlConnectionStringBuilder();
            cb.InitialCatalog = "veritabaniAdi";
            cb.DataSource = @".\SqlExpress";
            cb.UserID = "kullaniciAdi";
            cb.Password = "sifre";

            DataClasses1DataContext db = new DataClasses1DataContext(cb.ToString());
bu işini görür.
Champion78 Konuyu açan
2006'den beri1.716 mesaj
#7
evet ben de öyle yaptım mecbur (yani benzer şekilde). ama mesela proje ilk açıldığında o DataClasses1DataContext sınıfının yapıcısına connection string i gömebilseydim tüm yapıcılara değer göndermek zorunda kalmazdım :) sağlık olsun
2009'den beri15 mesaj
#8
En temizi, bir yardımcı class oluştur. içinde sana DataClasses1DataContext döndüren static bir class olsun.
public class dbHelper
    {
        public static DataClasses1DataContext returnDb()
        {
            SqlConnectionStringBuilder cb = new SqlConnectionStringBuilder();
            cb.InitialCatalog = "veritabaniAdi";
            cb.DataSource = @".\SqlExpress";
            cb.UserID = "kullaniciAdi";
            cb.Password = "sifre";

            return new DataClasses1DataContext(cb.ToString());
        }
    }


kullanacağın yerde de, DataClasses1DataContext db = dbHelper.returnDb(); demen yeterli olur.
Champion78 Konuyu açan
2006'den beri1.716 mesaj
#9
bu daha mantıklıymış ama iş işten geçti zaten :) belki başkasına faydalı olur..

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.