none
Birden fazla resim seçip Sql veritabanına ekleme RRS feed

  • Soru

  • Merhaba,

    PictureBox ve openFileDialog kullanarak bir ürüne 10 veya 15 adet aynı anda resim seçip sql veritabanına kaydetmek istiyorum. Bir türlü başaramadım.

    Yardımcı olursanız çok sevirim.

    9 Şubat 2020 Pazar 16:05

Yanıtlar

  • Hangi kısmını başaramadınız? Örnek:

    void Main()
    {
    	var path = @"C:\Windows\Web";
    	var pics = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)
    						.Where(x => new string[] { ".bmp", ".jpg", ".png" }
    						.Contains(new FileInfo(x).Extension.ToLower()));
    //	InsertPictures(pics);
    	ShowPictures();
    }
    
    void ShowPictures()
    {
    	DataTable tbl = new DataTable();
    	new SqlDataAdapter("select * from pictures",
    		@"server=.\SQLExpress;Trusted_connection=yes;Database=SampleDb").Fill(tbl);
    
    	var f = new Form { Height = 800, Width = 650 };
    	var dgv = new DataGridView { Dock = DockStyle.Fill, DataSource = tbl };
    	f.Controls.Add(dgv);
    	f.Show();
    	for (int i = 0; i < dgv.Rows.Count; i++)
    	{
    		dgv.Rows[i].Height = 108;
    	}
    	dgv.Columns["Fullname"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    
    	dgv.Columns["Picture"].Width = 192;
    	((DataGridViewImageColumn)dgv.Columns["Picture"]).ImageLayout = DataGridViewImageCellLayout.Stretch;
    }
    
    private void InsertPictures(IEnumerable<string> pics)
    {
    	using (SqlConnection connection = new SqlConnection(@"server=.\SQLExpress;Trusted_connection=yes;Database=SampleDb"))
    	{
    		//CREATE TABLE resimler 
    		// (resimId INT IDENTITY PRIMARY KEY, fullName VARCHAR(300), resim VARBINARY(max), kod VARCHAR(10));
    		SqlCommand cmd = new SqlCommand(@"insert into Pictures 
    		        (fullName,picture) values 
    				(@FullName, @Picture)", connection);
    		cmd.Parameters.Add("@FullName", SqlDbType.VarChar);
    		cmd.Parameters.Add("@Picture", SqlDbType.VarBinary);
    		connection.Open();
    		foreach (var fileName in pics)
    		{
    			cmd.Parameters["@Picture"].Value = File.ReadAllBytes(fileName);
    			cmd.Parameters["@FullName"].Value = Path.GetFileName(fileName);
    			cmd.ExecuteNonQuery();
    		}
    		connection.Close();
    	}
    }
    
    //create table pictures(
    //  pictureId int identity not null primary key,
    //  fullname varchar(260),
    //  picture varbinary(max));



    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.

    9 Şubat 2020 Pazar 17:29
    Yanıtlayıcı