none
sql server toplu resim güncelle!! RRS feed

  • Soru


  • Merhaba ; aşağıda veri tablosuna toplu resim yüklemek istiyorum. 

    ====   ======     =========          ========               ======

    IND       STOK NO       MALIN CİNSİ            STOKKODU                 RESIM

    ====   ======     =========            ========             ======

    121       125             ONA AYÇİÇEK 2 LT     8690566100164            ??

    Resimlerin tümüne STOKKODU numarasını verirsem bunları bir klasörün içinden,  toplu bir halde resim güncelleme ve update yapabilirmiyim. (ürün resmi çoktur) örneklerle yadımcı olabilirmisiniz.saygılar. 


    23 Mart 2020 Pazartesi 13:11

Yanıtlar

  • Yaparsiniz herhalde de, veri tablosu ne demek? MS SQL Server mi, postgreSQL mi, MySQL mi, MongoDb mi ... 250 uzerinde ihtimal var.

    StokKodu unique, stokkodu sadece rakamlardan oluyor, veri tablosunun adi Stok, veritabanı MS SQL Server resim alanı varbinary(MAX), resimler c:\resimler klasöründe (hepsi ornegin .PNG) ... ise:

    void Main()
    {
    	var sqlcn = @"server=.\SQLExpress;Trusted_connection=yes;Database=DbAd";
    	var path = @"c:\resimler";
    	var pics = Directory.GetFiles(path, "*.PNG", SearchOption.TopDirectoryOnly)
    		.Select(f => Path.GetFileNameWithoutExtension(f));
    
    	var tbl = new DataTable();
    	new SqlDataAdapter("select StokKodu from Stok", sqlcn).Fill(tbl);
    
    	var matches = tbl.AsEnumerable()
    		.Where(t => pics.Contains(t.Field<string>("StokKodu")))
    		.Select(t => t.Field<string>("StokKodu"))
    		.ToList();
    
    	using (SqlConnection cn = new SqlConnection(sqlcn))
    	using (SqlCommand cmd = new SqlCommand(@"Update stok
    		set resim = @resim
    		where stokKodu = @stokKodu", cn))
    	{
    		cmd.Parameters.Add("@resim", SqlDbType.VarBinary);
    		cmd.Parameters.Add("@stokKodu", SqlDbType.VarChar);
    		
    		cn.Open();
    		foreach (var m in matches)
    		{
    			var filename = Path.Combine(path, Path.ChangeExtension(m, "PNG"));
    
    			cmd.Parameters["@resim"].Value = File.ReadAllBytes(filename);
    			cmd.Parameters["@stokKodu"].Value = m;
    			
    			cmd.ExecuteNonQuery();
    		}
    		cn.Close();
    	}
    }



    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.

    23 Mart 2020 Pazartesi 13:50
    Yanıtlayıcı

Tüm Yanıtlar

  • selamlar, seve seve yardımcı oluruz tabiki :) ama öncesinde senin bize yardım etmen gerekecek. Veri tabanı ne kullanıyorsun. Uygulaman masaüstü, webform, .net mvc, .core mvc ? verileri ne ile çekiyorsun ADO ? EF ?

    tam ne kullanıyorsun 

    bunlar hakkında tam detay verebilirsen destek olabiliriz

    23 Mart 2020 Pazartesi 13:21
  • Yaparsiniz herhalde de, veri tablosu ne demek? MS SQL Server mi, postgreSQL mi, MySQL mi, MongoDb mi ... 250 uzerinde ihtimal var.

    StokKodu unique, stokkodu sadece rakamlardan oluyor, veri tablosunun adi Stok, veritabanı MS SQL Server resim alanı varbinary(MAX), resimler c:\resimler klasöründe (hepsi ornegin .PNG) ... ise:

    void Main()
    {
    	var sqlcn = @"server=.\SQLExpress;Trusted_connection=yes;Database=DbAd";
    	var path = @"c:\resimler";
    	var pics = Directory.GetFiles(path, "*.PNG", SearchOption.TopDirectoryOnly)
    		.Select(f => Path.GetFileNameWithoutExtension(f));
    
    	var tbl = new DataTable();
    	new SqlDataAdapter("select StokKodu from Stok", sqlcn).Fill(tbl);
    
    	var matches = tbl.AsEnumerable()
    		.Where(t => pics.Contains(t.Field<string>("StokKodu")))
    		.Select(t => t.Field<string>("StokKodu"))
    		.ToList();
    
    	using (SqlConnection cn = new SqlConnection(sqlcn))
    	using (SqlCommand cmd = new SqlCommand(@"Update stok
    		set resim = @resim
    		where stokKodu = @stokKodu", cn))
    	{
    		cmd.Parameters.Add("@resim", SqlDbType.VarBinary);
    		cmd.Parameters.Add("@stokKodu", SqlDbType.VarChar);
    		
    		cn.Open();
    		foreach (var m in matches)
    		{
    			var filename = Path.Combine(path, Path.ChangeExtension(m, "PNG"));
    
    			cmd.Parameters["@resim"].Value = File.ReadAllBytes(filename);
    			cmd.Parameters["@stokKodu"].Value = m;
    			
    			cmd.ExecuteNonQuery();
    		}
    		cn.Close();
    	}
    }



    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.

    23 Mart 2020 Pazartesi 13:50
    Yanıtlayıcı
  • Microsoft SQL Server Management Studio 18 İLE bağlanıp ilgili tablolara erişim sağladım

    yukarıdaki örneği de tablodan örnek alarak  yukarıda izah etmeye çalıştım 

    bu bilgi yeterlimi bilmiyorum murat bey,

    23 Mart 2020 Pazartesi 14:12
  • Çetin bey ; MS SQL Server 
    23 Mart 2020 Pazartesi 14:14
  • Yukaridaki kod da, dediğim gibi, MS SQL Server.


    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.

    23 Mart 2020 Pazartesi 14:15
    Yanıtlayıcı
  • Çetin bey ;

    ANA DATA= ETİCARET

    KULLANICI ADI:Sa

    ŞİFRE : 1453

    ANA TABLO BU ;  dbo.F0103TBLSTOKLAR  bu tabloya bağlı alanlarda aşağıdaki gibidir. 

    ====   ======     =========          ========               ======

    IND       STOK NO       MALIN CİNSİ            STOKKODU                 RESIM

    ====   ======     =========            ========             ======

    121       125             ONA AYÇİÇEK 2 LT     8690566100164            ??

    Bu tablo ve datalara göre kodlarımızı yani ana datayı ANA DATA= ETİCARET nereye? KULLANICI ADI:Sa nereye?

    ŞİFRE : 1453nereye? ana tablo adı = dbo.F0103TBLSTOKLAR nereye , verdiğiniz kodların içine ne şekilde yerleştirmemiz lazım, size çok teşekkürlerimi sunarım.esenlikle kalın saygılar efendim.

    23 Mart 2020 Pazartesi 14:31
  • Çetin bey ;

    ANA DATA= ETİCARET

    KULLANICI ADI:Sa

    ŞİFRE : 1453

    ANA TABLO BU ;  dbo.F0103TBLSTOKLAR  bu tabloya bağlı alanlarda aşağıdaki gibidir. 

    ====   ======     =========          ========               ======

    IND       STOK NO       MALIN CİNSİ            STOKKODU                 RESIM

    ====   ======     =========            ========             ======

    121       125             ONA AYÇİÇEK 2 LT     8690566100164            ??

    Bu tablo ve datalara göre kodlarımızı yani ana datayı ANA DATA= ETİCARET nereye? KULLANICI ADI:Sa nereye?

    ŞİFRE : 1453nereye? ana tablo adı = dbo.F0103TBLSTOKLAR nereye , verdiğiniz kodların içine ne şekilde yerleştirmemiz lazım, size çok teşekkürlerimi sunarım.esenlikle kalın saygılar efendim.

    Bunu soruyorsanız bence o veritabanına dokunmayınız. Veriyi kaybetmeniz an meselesi gibi geliyor.

    ANA DATA=ETICARET ne demek bilmiyorum. Database adi ETICARET demek istiyorsanız;

    var sqlcn = @"server=.\SQLExpress;Database=ETICARET;uid-sa;pwd=1453";
    
    Stok yerine de dbo.F0103TBLSTOKLAR.



    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.

    23 Mart 2020 Pazartesi 14:57
    Yanıtlayıcı
  • :)) Cengiz bey sıkıntı yok :)) datayı yedekleyip yapcam.

    Database=ETİCARET / Sa / 1453        (OK)    

    Stok (tabloADI) =dbo.F0103TBLSTOKLAR.       (OK)

    TABLONUN İÇİNDEKİ ALAN ADLARI OLDUĞU GİBİ ŞÖYLE

    KOLON ADI 1= IND               (OK)  

    KOLON ADI 2= STOKNO         (OK)

    KOLON ADI 3= MALINCINSI    (OK)

    KOLON ADI 4= STOKKODU      (OK)

    KOLON ADI 5= RESIM             (OK)

    SANIRIM ŞU HALİYE SİZİN VERDİĞİNİZ KODLAR BANA UYACAK. :))

    void Main()
    {
    var sqlcn = @"server=.\SQLExpress;Database=ETICARET;uid-sa;pwd=1453";
    var path = @"c:\resimler";
    var pics = Directory.GetFiles(path, "*.PNG", SearchOption.TopDirectoryOnly)
    .Select(f => Path.GetFileNameWithoutExtension(f));

    var tbl = new DataTable();
    new SqlDataAdapter("select STOKKODU from F0103TBLSTOKLAR", sqlcn).Fill(tbl);

    var matches = tbl.AsEnumerable()
    .Where(t => pics.Contains(t.Field<string>("STOKKODU")))
    .Select(t => t.Field<string>("STOKKODU"))
    .ToList();

    using (SqlConnection cn = new SqlConnection(sqlcn))
    using (SqlCommand cmd = new SqlCommand(@"Update F0103TBLSTOKLAR
    set RESIM = @RESIM
    where STOKKODU = @STOKKODU", cn))
    {
    cmd.Parameters.Add("@RESIM", SqlDbType.VarBinary);
    cmd.Parameters.Add("@STOKKODU", SqlDbType.VarChar);

    cn.Open();
    foreach (var m in matches)
    {
    var filename = Path.Combine(path, Path.ChangeExtension(m, "PNG"));

    cmd.Parameters["@RESIM"].Value = File.ReadAllBytes(filename);
    cmd.Parameters["@STOKKODU"].Value = m;

    cmd.ExecuteNonQuery();
    }
    cn.Close();
    }
    }

    23 Mart 2020 Pazartesi 15:29
  • Resim alanı varbinary(MAX) ise benim verdigim kod olur, Cengiz bey'in verdigi kodu bilemem.


    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.

    23 Mart 2020 Pazartesi 15:32
    Yanıtlayıcı
  • Pardon Çetin Bey , diyeceğim yere yanlış yazmışım özürdilerim sizin verdiğiniz kodlara göre çetin bey

    kolon isimlerini benim datamda ,karakterler nasılsa olduğu gibi yazcam onu teyit etmek içindi yani;

    kolon isimlerim ; IND , STOKNO , MALINCINSI , STOKKODU , RESIM  bunlar datamda böyle yazmaktadır.

    sizin verdiğiniz kodlara göre eşleştirerek , düzgün olup olmadığını teyit etmek için yazmıştım.

     
    23 Mart 2020 Pazartesi 15:49
  • Msg 102, Level 15, State 1, Line 1
    Incorrect syntax near ')'.
    Msg 102, Level 15, State 1, Line 5
    Incorrect syntax near '='.
    Msg 102, Level 15, State 1, Line 12
    Incorrect syntax near '='.

    Completion time: 2020-03-23T19:05:35.8277569+03:00

    HATA VERDİ

    23 Mart 2020 Pazartesi 16:07
  • Kodu nereye yazdınız? Line 5, Line 12'de hata vermis ama degil 12, 5 satir bile yok ki.

    Anydesk id verin bakalım en iyisi.



    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.

    23 Mart 2020 Pazartesi 16:36
    Yanıtlayıcı
  • tabloyu tam paylaşıyorum bi dakika

    23 Mart 2020 Pazartesi 17:22
  • any desk id veriyor musunuz, vermiyor musunuz? 2 dk daha bekleyeyim.


    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.

    23 Mart 2020 Pazartesi 17:44
    Yanıtlayıcı
  • tablo 1

    23 Mart 2020 Pazartesi 17:46
  • selamlar bunları Query üzerinde denemediniz dimi :)
    23 Mart 2020 Pazartesi 17:49
  • :)) nerde deneycez :))

    23 Mart 2020 Pazartesi 17:52
  • Soruyu C# formunda sormadıniz mi :) C# biliyorsunuz sanmiştim.




    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.

    23 Mart 2020 Pazartesi 18:01
    Yanıtlayıcı
  • Evet Çetin bey ; resimde de görüldüğü üzere F0103TBLSTOKLAR tablosunda bulunan tüm ürünlerin  KOLON adı RESIM olan kolona resim atarak  güncellemek ve yüklemek istiyorum :))  sizin gibi üstadlardan bişeyler öğrenmeye çalışacağız  :))



    23 Mart 2020 Pazartesi 18:20
  • Yukarida C# kodunu verdim. Yapamıyorsanız Anydesk ID verin. 5 dk bekleyeceğim.


    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.

    23 Mart 2020 Pazartesi 18:42
    Yanıtlayıcı
  • 720 062 396

    ekrandayım müsaitseniz :))  çetin bey yarın müsait olurmusunuz burdan yazarmısınız saygılar





    23 Mart 2020 Pazartesi 18:59
  • selamlar, burdaysanız bende destek olabilirim :)
    23 Mart 2020 Pazartesi 20:05
  • selamlar, burdaysanız bende destek olabilirim :)
    Hallettik :) Senin klavye avantajın olurdu, keske onceden görseydim (ben Ctrl+C, V, KC ... olmadan calismak zorunda kalıyorum, Mouse happy :)


    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.

    23 Mart 2020 Pazartesi 20:17
    Yanıtlayıcı
  • Çetin bey ; teşekkür ederim ilgiliniz için ,uzaktan serveri yanlışlıkla kapattım, programdan resim önizlemesine bakacaktım artık, yarın bakar bilgi veririm, iyi geceler :))
    23 Mart 2020 Pazartesi 20:57
  • Murat bey; sizede teşekkür ederim, alakanız için saygılarımı sunarım.
    23 Mart 2020 Pazartesi 20:59