﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SQL&#8217;de Veritabanına Fotoğraf Ekleyip Çıkaran Prosedür &#8211; SQL Server Eğitimleri</title>
	<atom:link href="https://sqlserveregitimleri.com/etiket/sqlde-veritabanina-fotograf-ekleyip-cikaran-prosedur/feed" rel="self" type="application/rss+xml" />
	<link>https://sqlserveregitimleri.com</link>
	<description>SQL Server ile ilgili her şey</description>
	<lastBuildDate>Thu, 03 Feb 2022 10:33:11 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>
	<item>
		<title>SQL Server’da Veritabanına Fotoğraf Ekleyip Çıkaran Prosedür</title>
		<link>https://sqlserveregitimleri.com/sql-serverda-veritabanina-fotograf-ekleyip-cikaran-prosedur</link>
		
		<dc:creator><![CDATA[Yavuz Selim Kart]]></dc:creator>
		<pubDate>Thu, 17 Oct 2019 20:27:43 +0000</pubDate>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server’da Veritabanına Fotoğraf Ekleyip Çıkaran Prosedür]]></category>
		<category><![CDATA[SQL'de Veritabanına Fotoğraf Ekleyip Çıkaran Prosedür]]></category>
		<category><![CDATA[Veritabanına Fotoğraf Ekleyip Çıkaran Prosedür]]></category>
		<guid isPermaLink="false">http://sqlserveregitimleri.com/?p=7841</guid>

					<description><![CDATA[Herkese merhaba, Bu yazıda SQL Server’da veritabanına fotoğraf ekleyip çıkaran prosedür hakkında bilgi vereceğim. SQL Server&#8217;da bazı durumlarda veritabanına fotoğraf ekleyip, sonrasında bu fotoğrafları başka...]]></description>
										<content:encoded><![CDATA[<p>Herkese merhaba,</p>
<p>Bu yazıda SQL Server’da veritabanına fotoğraf ekleyip çıkaran prosedür hakkında bilgi vereceğim.</p>
<p>SQL Server&#8217;da bazı durumlarda veritabanına fotoğraf ekleyip, sonrasında bu fotoğrafları başka bir klasöre ya da dosyaya <strong>T-SQL</strong> komutları ile çıkarmak isteyebiliriz.</p>
<p>İlk olarak aşağıdaki kodları çalıştırıp gerekli ayarlamaları yapmalısınız.</p>
<pre class="line-numbers"><code class="language-sql">EXEC sp_configure 'show advanced options', 1; 
RECONFIGURE; 
EXEC sp_configure 'Ole Automation Procedures', 1; 
RECONFIGURE;</code></pre>
<p>Şimdi tablomuzu oluşturalım.</p>
<pre class="line-numbers"><code class="language-sql">--Fotoğraf tutacağımız tabloyu oluşturuyoruz.

CREATE TABLE Fotograflar
(
    FotoAd NVARCHAR(40) PRIMARY KEY NOT NULL,
    FotoDosyaAd NVARCHAR(100),
    FotoData VARBINARY(MAX)
);</code></pre>
<p>Şu anda tablomuzun içi boş. Tablomuzun içine fotoğraf eklemek için bir prosedür oluşturuyoruz. Kodları aşağıda görmektesiniz.</p>
<pre class="line-numbers"><code class="language-sql">--Veritabanına Fotoğraf Ekleyen Prosedür 
CREATE PROCEDURE VeritabaninaFotoEkle
(
    @FotoAd NVARCHAR(100),
    @FotoDosyaYolu NVARCHAR(1000),
    @DosyaAd NVARCHAR(1000)
)
AS
BEGIN
    DECLARE @DisDosyaYolu NVARCHAR(2000);
    DECLARE @Sql NVARCHAR(2000);
    SET NOCOUNT ON;
    SET @DisDosyaYolu = CONCAT(@FotoDosyaYolu, '\', @DosyaAd);
    SET @Sql
        = N'INSERT INTO Fotograflar (FotoAd, FotoDosyaAd, FotoData) ' + N' SELECT ' + N'''' + @FotoAd + N'''' + N','
          + N'''' + @DosyaAd + N'''' + N', * ' + N'FROM Openrowset( BULK ' + N'''' + @DisDosyaYolu + N''''
          + N', Single_Blob) as Fotograf';
    EXEC (@Sql);
    SET NOCOUNT OFF;
END;</code></pre>
<p>Prosedürümüzü çalıştırıyoruz ve prosedür başarılı şekilde oluşturuldu. Şimdi fotoğrafı çıkaran prosedürün kodlarını çalıştıralım. Aşağıda kodları görmektesiniz.</p>
<pre class="line-numbers"><code class="language-sql">--Veritabanından Fotoğraf Çıkaran Prosedür 

CREATE PROCEDURE VeritabanindanFotografCikar
(
    @FotoAd NVARCHAR(100),
    @FotoDosyaYolu NVARCHAR(1000),
    @DosyaAd NVARCHAR(1000)
)
AS
BEGIN
    DECLARE @FotoData VARBINARY(MAX);
    DECLARE @DisDosyaYolu NVARCHAR(2000);
    DECLARE @Nesne INT;
    SET NOCOUNT ON;
    SELECT @FotoData =
    (
        SELECT CONVERT(VARBINARY(MAX), FotoData, 1)
        FROM dbo.Fotograflar
        WHERE FotoAd = @FotoAd
    );
    SET @DisDosyaYolu = CONCAT(@FotoDosyaYolu, '\', @DosyaAd);
    BEGIN TRY
        EXEC sp_OACreate 'ADODB.Stream', @Nesne OUTPUT;
        EXEC sp_OASetProperty @Nesne, 'Type', 1;
        EXEC sp_OAMethod @Nesne, 'Open';
        EXEC sp_OAMethod @Nesne, 'Write', NULL, @FotoData;
        EXEC sp_OAMethod @Nesne, 'SaveToFile', NULL, @DisDosyaYolu, 2;
        EXEC sp_OAMethod @Nesne, 'Close';
        EXEC sp_OADestroy @Nesne;
    END TRY
    BEGIN CATCH
        EXEC sp_OADestroy @Nesne;
    END CATCH;
    SET NOCOUNT OFF;
END;</code></pre>
<p>İkinci prosedür de başarılı şekilde oluştu ise şimdi tablomuzun içine bilgisayarımızdaki bir fotoğrafı ekleyelim. Bu işlem için biraz önce oluşturduğumuz prosedürü kullanıyoruz.</p>
<p>Ben D klasörü içine herhangi bir fotoğraf ekledim. Siz istediğiniz fotoğrafı kullanabilirsiniz.</p>
<p><span style="color: #ff0000;"><strong>Not :</strong> </span><strong>Windows&#8217;un yüklü olduğu sürücüde bu işlemi yaptığınız zaman hata alabilirsiniz. </strong></p>
<p>Fotoğraf ekleme prosedürü aşağıdadır.</p>
<pre class="line-numbers"><code class="language-sql">--Fotoğrafın prosedür ile veritabanına eklenmesi (Windows'un yüklü olduğu sürücüde hata vermekte. Bu yüzden farklı bir sürücü üzerinde işlemi yapın.) 

EXEC dbo.VeritabaninaFotoEkle 'Dragon', 'D:\', 'Foto.png';</code></pre>
<p>İşlem başarılı bir şekilde çalıştı ise aşağıdaki sonucu göreceksiniz.</p>
<p><img fetchpriority="high" decoding="async" class="alignnone wp-image-7843 size-full" src="https://sqlserveregitimleri.com/wp-content/uploads/2019/10/sql-serverda-veritabanina-fotograf-ekleyip-cikaran-prosedur-1.jpg" alt="SQL Server’da Veritabanına Fotoğraf Ekleyip Çıkaran Prosedür" width="700" height="293" srcset="https://sqlserveregitimleri.com/wp-content/uploads/2019/10/sql-serverda-veritabanina-fotograf-ekleyip-cikaran-prosedur-1.jpg 700w, https://sqlserveregitimleri.com/wp-content/uploads/2019/10/sql-serverda-veritabanina-fotograf-ekleyip-cikaran-prosedur-1-315x132.jpg 315w" sizes="(max-width: 700px) 100vw, 700px" /></p>
<p>Şimdi fotoğrafı D sürücüsü içerisinden siliyorum ve oluşturmuş olduğum prosedür ile veritabanından geri getirmek istiyorum. Fotoğraf çıkarma prosedürü aşağıdadır.</p>
<pre class="line-numbers"><code class="language-sql">--Fotoğrafın prosedür ile veritabanından çıkarılması (Windows'un yüklü olduğu sürücüde hata vermekte. Bu yüzden farklı bir sürücü üzerinde işlemi yapın.) 

EXEC dbo.VeritabanindanFotografCikar 'Dragon', 'D:\', 'Dragon.png';</code></pre>
<p>Kodu çalıştırdığınız zaman <strong>D</strong> sürücüsüne fotoğrafın geri geldiğini göreceksiniz.</p>
<p>Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.</p>
<div class='epvc-post-count'><span class='epvc-eye'></span>  <span class="epvc-count"> 562</span><span class='epvc-label'> Kez Okundu</span></div>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
