Sunday, July 19, 2015

SQLite ma`lumotlar ba`zasini boshqarish tizimida qo`shimcha funksiya(custom function)lardan foydalanish

   Sqlite da atigi bir nechta funksiya bor, oddiy dasturlar uchun bu yetarli. Lekin murakkabroq so`rovlarni tuzish uchun bu albatta kamlik qiladi. Shu sababli Sqlite o`ziga qo`shimcha funksiya yozib undan keng foydalanishimiz uchun darvozalarini ochib qo`ygan.

   Biz istan tipdagi funksiyani qo`shib, unga maxsus logikani ishlatishimiz mumkin. Bu funksiyalar yacheykalar bo`yicha har bir ustun uchun alohida tepadan pastga qarab ishlaydi.
Aggregate funksiyalar 1 dona natija qaytaradi(masalan: sum, min, max,avg, count,..), Scalar funksiyalar satrlarning soniga teng natija qaytaradi.(length, lower, upper, day, year,...)

Foydalanish tartibi:

1. Yangi funksiyamizni Connection dan ro`yxatdan o`tkazamiz

_connection.BindFunction(new Lower());
2. Yangi funksiya tanasi
using System; using System.Data.SQLite; namespace SQLite.CustomFunction {     [SQLiteFunction(Name = "lower", Arguments = 1, FuncType = FunctionType.Scalar)]     public sealed class Lower : SQLiteFunction     {         public override object Invoke(object[] args)         {             return args.Length > 0 ? (args[0].ToString() ?? "").ToLower() : null;        }     } }
Sqliteda lower funksiyasi bor, ammo u krill harfi uchun ishlamaydi, bizni yangi funksiyamiz  Sqlite ning funksiyasini qayta yuklaydi(override, overload). Esda tuting: Bu so`rov sqlite browserida ishlamaydi, chunki uning kodida bu funksiya yo`q, faqat bizning ulanish usluniimizdagi ro`yxatga olingan dasturimizda ishlaydi

No comments:

Post a Comment