Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
uğur erdem
uğur erdem
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
3 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: .net 2008 CLR CLR SQL CLR SQL 2005 CLR SQL 2008 Common Language Runtime Sql Split sql 2005 sql 2008 Kodlama uğur erdem
 
YAZI HAKKINDA
Türü : Serbest Köşe (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : Kodlama
Yayınlanma Tarihi : 6.9.2010
Okunma Sayısı : 25679
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 29.3.2024
Turhal Temizer
Mac OS/X Removing CUDA 29.3.2024
Burak Selim Şenyurt
Kurumsal Yazılımcının Oyun Geliştirme ile İmtihanı 29.3.2024
Burak Selim Şenyurt
Matematik ve Oyun Programlama - Missile Command - Final 29.3.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Common Language Runtime Sql ilişkisi ve Split
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon

 

Merhaba Arakadaşlar,

Bu yazımda Common Language runtime ile Sql server üzerine C# ‘ hazırladığınız bir fonksiyonu eklemeye anlatacağım. Öncelikle Spliti seçtim çünki Sql üzerinde split yapamıyoruz. bunun çözümüde yine SQL 2005 ile .Net Framework üzerinde geliştirdiğimiz DLL lerin Sql üzerine eklenip functionların oluşturulması ile çözebiliriz.

Common Language Runtime SQL 2005 ile gelen bir yenilik. Yaptığı işlem ise süper !!!.  C# ile hazırladığınız bir DLL i SQL üzerinde tanımlı USER DEFINED FUNCTION olarak kullanabilirsiniz. Nasıl mı ?

Öncelikle VS üzerinde yeni bir proje oluşturark başlayalım işe. VS 2008 imizi açıyoruz ve projelerden Database ‘ i seçiyoruz.
Daha sonra eklenen proje üzerinde sağ tıklayıp, Add > New Item > User Defined Function>Split ismini verelim.

using System;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;

public partial class UserDefinedFunctions
{
[SqlFunction(TableDefinition = "ID int", FillRowMethodName = "FillRow")] //Tablomuz daki columnları buradan belirtebiliriz. split olacağı için sadece tek column var.
public static IEnumerable SplitToTable(SqlString pValue, SqlString pAyirac)
{

// IEnumerable kayıtların tablo halinde gösterilmesi için

// value olarak aldığımız değer bizim hangi split edeceğimiz veriyi içeriyor
string value = pValue.ToString();

//Ayırac olarak gelen ise gelen veriyi neye göre ayıracağımızı içeriyor.
char ayirac = Convert.ToChar(pAyirac.ToString());
DataTable dt = new DataTable();
dt.Columns.Add(“ID”);
string[] yeniDegerler = value.Split(ayirac);
foreach (string deger in yeniDegerler)
{
if (!string.IsNullOrEmpty(deger))
{

//Tüm değerleri datatable üzerine ekleyeyim
DataRow drNew = dt.NewRow();
drNew["ID"] = deger;
dt.Rows.Add(drNew);
}
}

//tablodaki rowlar bir IEnumerable tip olarak dönderilebilir.
return dt.Rows;
}

public static void FillRow(object item, out int pId)
{

//rowlarımız enumeration olarak tanımlayacak methodumuz. Bu methodu function çağrılırken tanımlamış olmamız gerekiyor.
DataRow row = (DataRow)item;
pId = Convert.ToInt32(row[0]);
}

};

Eğer projenizi eklerken sizden kullanmak için bir bağlantı istedi ise, ve siz bu bağlantıyı referans olarak ekledi iseniz, vs üzerinde F5 ile direk çalıştırdğınız seçtiniz projeye functionımızı deploy edecektir.

Eğer TSQL ile yapmak isterseniz, projemizi build ettikten sonra bin klasöründe bulunan dll imizi c:\ altına kopyalayalım, sonra Sql serverımızı açıp hangi DB üzerinde kullanacak isek ona ait bir query penceresi açalım, ve dll imi aşağıdaki gibi Sql üzerine ekleyelim,
CREATE ASSEMBLY Split FROM ‘C:\Split.dll’
GO
USE [pubs]
GO

CREATE FUNCTION [dbo].[SplitToTable](@pValue [nvarchar](4000), @pAyirac [nvarchar](4000))
RETURNS  TABLE (
[ID] [int] NULL
) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [Split].[UserDefinedFunctions].[SplitToTable]
GO

daha sonra basit bir query ile test edelim.

SELECT * FROM dbo.SplitToTable(’2,2,2,2,2,2,2′,’,')

Sonuç ;

ID
———–
2
2
2
2
2
2
2

(7 row(s) affected)

Bol Kod Günler :)

 

Makale:
Common Language Runtime Sql ilişkisi ve Split Kodlama uğur erdem
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor