Showing posts with label Util. Show all posts
Showing posts with label Util. Show all posts

Sunday, October 15, 2017

ProjectBase Data Access and Utility Library - ProjectBase Veri Erişim ve Yazılım Destek Kütüphanesi

ProjectBase (PB) is a Utility and Data Access library. PB designed with a database independent interface oriented approach to ensure extentibility and reliablity. PB's codes can be changed or manipulated easily. PB can be installed with nuget package manager console:
PM> Install-Package vyigity.ProjectBase -Version 4.0.0

PB has 3 type of data access:
  • Automatic Connection Management: Using single connection object and while executing a command, connection is opened and closed automatically.
  • Manuel Connection Management: Using single connection object and connection is opened and closed by developer manually.
  • Transaction Mode: PB supports PL/SQL type code writing of transactional processes. PB creates transactions and manages them automatically.
PB currently supports Oracle (Managed-Unmanaged Provider), SQL Server databases and OleDb. PB supports MySql provider with v2.0.0 and PostgreSQL provider with v3.0.0.
Also PB supports low level object mapping features.

Project Adress:
For introduction:
For connection management examples:
For transactions examples:
For DML examples:
For parametric database procedures and functions examples:

Friday, February 19, 2016

Yazı İçinde Yer Alan Türkçe Karakterlerin İngilizce Karakterlere Dönüştürülmesi

Bazı ingilizce kökenli uygulamalarda kullanıcı ismi vb. bilgiler ingilizce karakter kullanılarak oluşturulmaktadır. Örneğin isim kısaltması yapılacaksa Adnan Göktürk olan bir kişinin kullanıcı kodu A-GOKTURK olarak kullanılabilmektedir. Bu ve benzeri durumlarda giriş verisi içinde yer alan tükçe karakterler ingilizce karşılıkları ile değiştirilmesi gerekir. Bu gereksinimi karşılayan C# kodu aşağıdadır.

IsNull fonksiyonu parametrenin null veya DBNull olup olmadığını kontrol etmektedir.
        
public static string GetEnglishLocalizedString(string SearchString)
{
if (!IsNull(SearchString))
{
char[] turkishChars = { 'ı', 'ğ', 'İ', 'Ğ', 'ç', 'Ç', 'ş', 'Ş', 'ö', 'Ö', 'ü', 'Ü' };
char[] englishChars = { 'i', 'g', 'I', 'G', 'c', 'C', 's', 'S', 'o', 'O', 'u', 'U' };
for (int i = 0; i < turkishChars.Length; i++)
{
SearchString = SearchString.Replace(turkishChars[i], englishChars[i]);
}
return SearchString;
}
else
return null;
}

Düzenli İfadeleri Kullanarak Karakter Dizisi İçindeki Örüntüleri Bulma - Finding Patterns in Strings with Using Regular Expressions

Regex (Regular Expression) bir karakterler dizisi içinde düzenli bir parçayı bulmak için kullanılan bir yöntemdir. Düzenli yapının ifadesi Regex tanımlama kuralları kullanarak tanımlanır ve string içindeki bu kurala uyan kısımlar ayrıştırılıp elde edilebilir. Örnek olarak karmaşık bir string içinde yer alan tarih kısmını bulalım:

* Bulmak istediğimiz tarih formatı:

19.02.2016

* Örüntüyü ifade eden RexExp :

(0[1-9]|[12][0-9]|3[01]|[1-9])[- /.](0[1-9]|1[012]|[1-9])[- /.](19|2)\d\d\d

* Test Verisi 1:

dafffas1319.02.2016daq12341515

* Test Verisi 2:

-*daf/fa.*19.2.20169a1341qwca12.1.1

* Çalıştıracağımız C# kodu:

public static DateTime? findDateInString(string SearchString)
{
Regex ex = new Regex(DateInStringRegEx);
var match = ex.Matches(SearchString);
if (match.Count > 0)
return DateTime.Parse(match[0].Value);
else
return null;
}

SONUÇLAR:

* Sonuç 1 (Test Verisi 1):

19.02.2016

* Sonuç 2 (Test Verisi 2):

19.02.2016



Monday, January 11, 2016

C# ile Nesnelerin XML Formatına Dönüştürülmesi - Transform of Objects into XML Coding

Nesneler veri tabanında saklanırken bazı durumlarda insanların anlayabileceği, hatta içerik sorgulayabileceği bir formata çevrilmesi gerekebilir. Bu durumumda "XmlSerializer" sınıfı kullanılarak nesneler XML formatına dönüştürülebilmektedir. Aşağıdaki örnekte "SerializeObjectXml" fonksiyonu kullanılarak nesne XML formatlı string değerine dönüştürülmektedir. "DeSeriliazeObjectXml" fonksiyonu kullanılarak da XML formatından geri dönüş yapılabilmektedir.

 public static string SerializeObjectXml(T Obj)
 {        
      StringWriter swriter = new StringWriter();
      XmlSerializer sxml = new XmlSerializer(typeof(T));
      sxml.Serialize(swriter, Obj);
      return swriter.ToString();
 }

 public static T DeSeriliazeObjectXml(string XmlString)
 {
      XmlSerializer sxml = new XmlSerializer(typeof(T));
      return (T)sxml.Deserialize(new StringReader(XmlString));
 }

C# ile Nesnelerin Serileştirilmesi - Object Serialization

Bazı durumlarda nesnelerin serileştirilip yanı byte dizisi (byte[]) haline getirilip veritabanında saklanması gerekebilmektedir. Bu durumda "BinaryFormatter" sınıfı kullanılarak nesneler serileştirilebilmektedir. Aşağıdaki örnekte "SerializeObjectBinary" fonksiyonu nesneyi serileştirmek için kullanılmakta ve "DeSerializeObjectBinary" fonksiyonu ile nesne tekrar elde edilebilmektedir.

public static byte[] SerializeObjectBinary(object Obj)
{
     MemoryStream stream = new MemoryStream();
     BinaryFormatter formatter = new BinaryFormatter();
     formatter.Serialize(stream, Obj);

     return stream.ToArray();
}

public static object DeSerializeObjectBinary(byte[] ObjBinary)
{
     MemoryStream stream = new MemoryStream();
     stream.Write(ObjBinary, 0, ObjBinary.Length);
     stream.Position = 0;
     BinaryFormatter formatter = new BinaryFormatter();
     return formatter.Deserialize(stream); ;
}


C# Jenerik Fonksiyonlar - C# Generic Functions

Jenerik fonksiyonlar kodlama içinde fonksiyonun tipe göre reaksiyon gösterebilmesini sağlamaktadır. Kavram olarak çok biçimlilik (polymorphism) konusunun örneklerindendir. Aşağıdaki örnek fonksiyonda iki sınıfın ortak "property" değerleri diğerine kopyalanmaktadır ve fonksiyon üzerine kopyalama yapılan nesneyi kendi tipinde döndürmektedir.

public static T CopyObject < T >(object From, T To) where T:class
{
     Type tfrom = From.GetType();
     Type tto = typeof(T);

     foreach (PropertyInfo to_property in tto.GetProperties())
     {
          foreach (PropertyInfo from_property in tfrom.GetProperties())
          {
              if (from_property.Name == to_property.Name)
              {
                  to_property.SetValue(To, from_property.GetValue(From));
                  break;
              }
          }
     }

     return To;          
}