none
c# Sql Script Çalıştırma RRS feed

  • Soru

  • Merhabalar, uygulamam yüklenirken içerisine default olarka veritabanı açtırıp, o veritabanınada dosya konumuna koyduğum scripti çalıştırmak istiyorum. Bununla ilgili yöntemler varmıdır?  Ben şöyle birşeyler yapmaya çalıştım. Ancak syntax hatası almaktyım

    if (File.Exists(Application.StartupPath + "\\data.txt")) { FileStream fs = new FileStream(Application.StartupPath + "\\data.txt", FileMode.Open, FileAccess.Read); StreamReader sr = new StreamReader(fs); //connection.Open(); while (!sr.EndOfStream) { lines+=" "+sr.ReadLine(); } sr.Close(); fs.Close(); defaultdata(connection); }

      private void defaultdata(SqlConnection baglanti)
            {
              
                baglanti.Open();
                string[] komutlar = Regex.Split(lines.Trim(), @"^\s*GO\s*$", RegexOptions.Multiline | RegexOptions.IgnoreCase);
                foreach (string komut in komutlar)
                {

                }
                new SqlCommand(lines.Trim(), baglanti).ExecuteNonQuery();
            }



    26 Aralık 2020 Cumartesi 14:45

Yanıtlar

  • Hata ^ ve $ kullanmanizda.

    Daha basit sekli:

    string lines = File.ReadAllText(filename);
    
    string[] komutlar = Regex.Split(lines, @"^\s*GO\s*$",
          RegexOptions.Multiline | RegexOptions.IgnoreCase);
    
    foreach (string komut in komutlar)
    {
    // ...
    }

    Tabii bu scriptleri calistiracak hesabin yetkilerinin ne olmasi gerektigini de dusunmelisiniz.

    Not: Ikisi de ayni sonucu vermez her zaman. Dogrusu ornekteki gibi.



    Blog
    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekali arkadasi Idris bu mesaja da atlayip ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdigimi, yardim etmeye calistigimi sorgulamaktir. Bu beyinsiz zavalliya, aptal oldugunu hatirlatmayi unutmayiniz.


    26 Aralık 2020 Cumartesi 15:49
    Yanıtlayıcı