none
sql adresine değişken atama RRS feed

  • Soru

  • ipp yazan yere From1() deki kodlarla değer atayıp sql e bağlanmasını sağlamaya çalışıyorum. ama değer atmıyor. nasıl yapabilirim.

    public Form1() { InitializeComponent();

    FileStream fss3 = File.Open(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + @"\AppData\Local\ipp.txt", FileMode.OpenOrCreate, FileAccess.Read);
                fss3.Close();

    StreamReader masa1;
                masa1 = File.OpenText(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + @"\AppData\Local\ipp.txt");
                string oku;
                while ((oku = masa1.ReadLine()) != null)
                {
                   ipp = oku.ToString();
                } }


    form1() komutundan sonra bu değişkeni atıyorum

     public static string baglanma = "Data Source="+ipp+";Initial Catalog = adisyon; User ID=otoman; password=123456";

    29 Nisan 2019 Pazartesi 23:38

Yanıtlar

  • Ne yazik ki, ne kodun ne is yaptigi ne de söylemek istediğiniz anlasilmiyor. Ornegin en basta fss3 diye bir FileStream'i açıp hemen kapatıyorsunuz. Sonra bir baska Stream açıp, satir satir okuyup, her nedense her satiri ipp diye bir değişkene atiyorsunuz, efektif olarak ipp sadece son satir degerini alirken neden Boyle bir dongu kullandiginiz belli degil. Yani kodda sanki şöyle yapılmak istenmiş gibi:

    var filename = Path.Combine(Environment
    		.GetFolderPath(Environment.SpecialFolder.UserProfile), @"AppData\Local\ipp.txt");
      ipp = File.ReadAllLines(filename).Last(f => !string.IsNullOrEmpty(f));

    Burada ipp neden local degil onu anlayamadım, sonrasında da soru anlasilmiyor, olmayan ne.

    Yoksa yapmaya calistiginiz bu mu?

     
    var ipDegeri = File.ReadAllLines(...
    
    baglanma = $"Data Source={ipDegeri.Trim()};Initial Catalog = adisyon; User ID=otoman; password=123456";

     


    30 Nisan 2019 Salı 12:29
    Yanıtlayıcı

Tüm Yanıtlar

  • Ne yazik ki, ne kodun ne is yaptigi ne de söylemek istediğiniz anlasilmiyor. Ornegin en basta fss3 diye bir FileStream'i açıp hemen kapatıyorsunuz. Sonra bir baska Stream açıp, satir satir okuyup, her nedense her satiri ipp diye bir değişkene atiyorsunuz, efektif olarak ipp sadece son satir degerini alirken neden Boyle bir dongu kullandiginiz belli degil. Yani kodda sanki şöyle yapılmak istenmiş gibi:

    var filename = Path.Combine(Environment
    		.GetFolderPath(Environment.SpecialFolder.UserProfile), @"AppData\Local\ipp.txt");
      ipp = File.ReadAllLines(filename).Last(f => !string.IsNullOrEmpty(f));

    Burada ipp neden local degil onu anlayamadım, sonrasında da soru anlasilmiyor, olmayan ne.

    Yoksa yapmaya calistiginiz bu mu?

     
    var ipDegeri = File.ReadAllLines(...
    
    baglanma = $"Data Source={ipDegeri.Trim()};Initial Catalog = adisyon; User ID=otoman; password=123456";

     


    30 Nisan 2019 Salı 12:29
    Yanıtlayıcı
  • istediğim sorunu çözdüm. public olmasının nedeni diğer formlardan da bu değişkeni çağırmak.

    bunu from1() den önce tanımladım.

    public static string baglanma;

    sonrasında Form1() içinde ipp değerini okuduktan sonra

    baglanma = "Data Source=" + ipp + ";Initial Catalog = adisyon; User ID=otoman; password=123456";

    bu şekilde değişkene atadım ve çalıştı. aslında soru basitti. program açılırken SQL serveri bulunan pc serverinin İP adresini okutup o şekilde programı açtırmaktı. sql server bağlantısı olmadan program açılmıyor çünkü.


    • Düzenleyen gomer_222 30 Nisan 2019 Salı 13:58
    30 Nisan 2019 Salı 13:57
  • Bunun yerine, GetConnectionString diye static bir metodu olan class daha kolay olurdu.  
    30 Nisan 2019 Salı 14:06
    Yanıtlayıcı
  • o nasıl oluyor. çünkü ağda sql serveri bulmak istiyorum ben. benim yaptığım server pc nin ip sini elle girdirmek. başka yol bulamadım
    30 Nisan 2019 Salı 14:22
  • ip'y gene elle girsin, ona bir şey demedim, baska yolunu ben de bilmiyorum zaten. Boyle form'a bagimli kod yazma demek istedim. Ornegin:

    public static class DataConnection
    {
    	private static string conStr;
    	public static string ConnectionString
    	{
    		get
    		{
    			if (string.IsNullOrEmpty(conStr))
    			{
    				conStr = GetConnectionString();
    			}
    			return conStr;
    		}
    	}
    	public static string GetConnectionString()
    	{
    		var filename = Path.Combine(Environment
    			.GetFolderPath(Environment.SpecialFolder.UserProfile), @"AppData\Local\ipp.txt");
    		var ipAddress = File.ReadAllLines(filename).Last(f => !string.IsNullOrEmpty(f));
    		
    		conStr = $"server={ipAddress.Trim()};Database=myDb;Trusted_Connection=yes;";
    
    		return conStr;
    	}
    }

    Boyle bir class olunca herhangi bir yerde bunu yapabilirsin:

    string s = DataConnection.ConnectionString;
    // veya 'güncelleme' etkisi ile
    string s = DataConnection.GetConnectionString();
    

    30 Nisan 2019 Salı 14:42
    Yanıtlayıcı