SQLite

sqlite türkçe harf sıralaması, sqlite turkish collation

10. January 2010

Kullandığım projelerde ACCESS yerine SQLite kullanmayı uzun zamandır düşünüyordum. Fakat SQLite altında sorgu yaptığımda harfleri Türkçe sıralayamıyordu.

Bu sorunu çözmek için önce SQLite ve ICU bileşenlerini kendim derlemeyi denedim. Fakat C bilgim olmadığı için bu konuda başarılı olamadım.

Ardından yılmadım ve denemelerime devam ettim.

En sonunda bu adresteki kodu kullanarak sorunumu çözebildim.

Öncelikle Bir class oluşturuyoruz ve bu Class başlığına şı satırlaır ekliyoruz:

using System.Data.SQLite;
using System.Globalization;

Ardından Class ın kod alanına bu satırları ekliyoruz:

namespace SQLiteUTF8CIComparison
{
    ///
    /// This function adds case-insensitive sort feature to SQLite engine
    /// To initialize, use SQLiteFunction.RegisterFunction() before all connections are open
    ///
    [SQLiteFunction(FuncType = FunctionType.Collation, Name = "UTF8CI")]
    public class SQLiteCaseInsensitiveCollation : SQLiteFunction
    {
        ///
        /// CultureInfo for comparing strings in case insensitive manner
        ///
        private static readonly CultureInfo _cultureInfo = CultureInfo.CreateSpecificCulture("tr-TR");
        ///
        /// Does case-insensitive comparison using _cultureInfo
        ///
        /// Left string
        /// Right string
        /// The result of a comparison
        public override int Compare(string x, string y)
        {
            return string.Compare(x, y, _cultureInfo, CompareOptions.IgnoreCase);
        }
    }
}

Şimdi bu fonksiyonu kullanabilmemiz için programın başlangıcına şu satırları ekliyoruz:

Header kısmına :

using System.Data.SQLite;
using SQLiteUTF8CIComparison;

 Form Load Event'ına:

SQLiteFunction.RegisterFunction(typeof(SQLiteCaseInsensitiveCollation));

Eğer tabloları herhangi bir SQLite Yönetim programıyla oluşturduysanız Türkçe sıralama yine çalışmayacaktır.

Tabloları kendimiz program içinde oluşturmalıyız. SQL konusunda iyi değilseniz SQLite yönetim programlarını herhangi biriyle oluşturduğunuz tabloyu EXPORT ederek SQL kodlarını elde edebilirsiniz. 

Burada sıralama yapacağınız (ORDER BY) FIELD'ların oluşturma koduna COLLATE UTF8CI kelimelerini ekliyoruz:

CREATE TABLE `tablom` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
`adi` TEXT NULL COLLATE UTF8CI,
`soyadi` TEXT)

 Bundan sonra yapacağınız insert ve select sorgularında sıralama Türkçe oalcaktır.

Eğer 

No such collation: UTF8CI

şeklinde hata alırsanız select sorgusunun sonuna COLLATE BINARY kelimelerini ekleyin :

select * from tablom order by adi COLLATE BINARY

İyi kodlamalar.

Kaynak   : http://www.egeonline.com/index.php/yazilimgelistirme/c/179-sqlite-tuerkce-harf-sralamas-sqlite-turkish-collation.html

Bu Güzel Makkale için Teşekkürler İlyas Bey 

FacebookDigg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

SQLite ,

SQLile / SQL Tutorials( SQLile SQL Kullanımı /

4. January 2010

Merhaba Arkadşlar  sizlere bu örnek makkalede  Sqlite kullanımı  hakkında bilgiler  sunacağım işallah sizler için yararlı bir bilgi  kaynağı  olur diyorum 

Giriş

Bu eğitimde Sadece  Windows ve Linux için de geçerlidir.

Cmd.exe ilgili bazı bilgiler: http://www.ss64.com/nt/cmd.html,

http://www.linuxdevcenter.com/pub/ct/19 de bir dizi örnek tabloların içeriğini  nasıl kullanılır  görebilirsiniz .

 

SQLite yükleme

   
1. Http://www.sqlite.org/download.html git
   
2. Bir komut indirin yeni versiyonu satırı programı erişim ve SQLite veritabanları değiştirme. (örneğin, sqlite-3_2_7.zip. bu yazının sürümü için önemli değildir).
   
3. Bir dizin oluşturun (örneğin C: / SQLite3 "> c: \ SQLite3) ve unzip sqlite *. exe o dizindeki.

SQLite ile Kullanımı
Komut satırı yorumlayıcısı (Cmd.exe) Başlangıç:

 















C: \ WINNT \ system32>

Aşağıdaki komutu  oluşturun :

C: \ WINNT \ system32> cd c: \ SQLite3

 
ve "" girin.


Creation  / Açılış Veritabanı

Bir veri tabanı aşağıdaki komut ile  açılabilir:

C: \ SQLite3> SQLite3 mycds.sl3

sl2 kullanmak ve "SL3" SQLite sürüm 2 ve 3 için sırasıyla. bir dosya  ve programı yeniden  bir veritabanı içinde oluşturur.

C: \ SQLite3> SQLite3 mycds.sl3

SQLite version 3.2.7

"Girin." Talimatları için yardım

SQLite>

SQLite komutları

 "sqlit değiştirildi Not>". Bu programı SQL komutlarını çalıştırmaya hazır olduğunu gösteririr


Closing Veritabanı

"Type ".exit" or ".quit"  "." Programına çıkmak için çıkın:

sqlite>. çıkmak


Table Creation / Tablo Oluşturma

 
Şimdi iki alan içeren bir tablo oluşturalım.

sqlite>create table Artists (
--->ArtistID INTEGER PRIMARY KEY,
--->ArtistName TEXT)


 
unutmayın. Aşağıdaki tablo daha karmaşık bir örnektir.

sqlite>create table CDs (
--->CDID INTEGER PRIMARY KEY,
--->ArtistID INTEGER NOT NULL,
--->Title TEXT NOT NULL,
--->Date TEXT);


Table Population

Bu PRIMARY KEY AUTOINCREMENT varsayılan olduğunu unutmayın.

sqlite>insert into Artists (ArtistID,ArtistName) values (NULL,'Peter Gabriel');
sqlite>insert into Artists (ArtistID,ArtistName) values (NULL,'Bruce Hornsby');
sqlite>insert into Artists (ArtistID,ArtistName) values (NULL,'Lyle Lovett');
sqlite>insert into Artists (ArtistID,ArtistName) values (NULL,'Beach Boys');
sqlite>insert into CDs (CDID,ArtistID,Title,Date) values (NULL,1,'So','1984');
sqlite>insert into CDs (CDID,ArtistID,Title,Date) values (NULL,1,'Us','1992');
sqlite>insert into CDs (CDID,ArtistID,Title,Date) values (NULL,2,'The Way It Is','1986');
sqlite>insert into CDs (CDID,ArtistID,Title,Date) values (NULL,2,'Scenes from the Southside','1990');
sqlite>insert into CDs (CDID,ArtistID,Title,Date) values (NULL,1,'Security','1990');
sqlite>insert into CDs (CDID,ArtistID,Title,Date) values (NULL,3,'Joshua Judges Ruth','1992');
sqlite>insert into CDs (CDID,ArtistID,Title,Date) values (NULL,4,'Pet Sounds','1966');


SQLite, ancak METİN veri (Tarih) değerleri  için  sadece   tek tırnak  kullanılır.

İpucu 1: Bir satır kopyalanabilir ve sağ CMD tıklayarak yapıştırılır. CMD Seçilen metni Shift sağ tıklayın (ya da" sağ tıklayın ve.

İpucu 2: Alternatif olarak, (adını ins_artists.sql gibi) aşağıdaki gibi  bir metin dosyası oluşturabilirsiniz:

-- insert 4 records into Artists (a comment line starts with "--") 
insert into Artists (ArtistID,ArtistName) values (NULL,'Peter Gabriel');
insert into Artists (ArtistID,ArtistName) values (NULL,'Bruce Hornsby');
insert into Artists (ArtistID,ArtistName) values (NULL,'Lyle Lovett');
insert into Artists (ArtistID,ArtistName) values (NULL,'Beach Boys');

nokta sonunda noktalı virgül (olmadan) komut çalıştırmak isterseniz :

sqlite>.read ins_artists.sql 

 

SELECT deyimi

ifadeleri   kontrol edelim .

sqlite>select * from Artists;   


and

sqlite>select * from CDs;    

Eğer diğer ,  alanın başlıklarını görüntülemek isterseniz , sqlite>. başlıkları şunlardır

 

ArtisID|ArtistName
1      |Peter Gabriel
2      |Bruce Hornsby
3      |Lyle Lovett
4      |Beach Boys

 

 and

CDID|ArtisID|Title                    |Date
1   |1      |So                       |1984
2   |1      |Us                       |1992
3   |2      |The Way It Is            |1986
4   |2      |Scenes from the Southside|1990
5   |1      |Security                 |1990
6   |3      |Joshua Judges Ruth       |1992
7   |4      |Pet Sounds               |1966

Diğer ifadeler :

sqlite>SELECT Title AS AlbumName FROM CDs;     
sqlite>SELECT Title FROM CDs WHERE Date>=1990 ORDER BY Title;     
sqlite>SELECT Date FROM CDs;     
sqlite>SELECT DISTINCT Date FROM CDs;     
sqlite>SELECT Title FROM CDs GROUP BY ArtistID;     
Iki  tablo arası   veri seçimi

Aşağıdaki SQL deyimi
sqlite>SELECT t1.ArtistName,CDs.Title FROM Artists t1, CDs WHERE t1.ArtistID=CDs.ArtistID    

gives

ArtistName   |Title
Peter Gabriel|So
Peter Gabriel|Us
Peter Gabriel|Security
Bruce Hornsby|The Way It Is
Bruce Hornsby|Scenes from the Southside
Lyle Lovett  |Joshua Judge Ruth
Beach Boys   |Pet Sounds
Bazı Sanatçılar için bir takma ad olarak kullanılan T1 yukarıdaki açıklamada. 

UPDATE deyimi

yanlış bir kayıt  durumun da 

sqlite>insert into Artists (ArtistID,ArtistName) values (NULL,'Supernatural');

Then correct:

sqlite>UPDATE Artists SET ArtistName ='Santana' WHERE ArtistID=5;     

Now you can insert a CD:

sqlite>insert into CDs (CDID,ArtistID,Title,Date) values (NULL,5,'Supernatural','1999');     

 

table silme komutu ,  deneme

 

sqlite>select * FROM CDs WHERE Title LIKE 'Super%';     

OK? Now we are sure what we are going to delete:

sqlite>DELETE FROM CDs WHERE Title LIKE 'Super%';     

As a precaution you can try first

sqlite>Select * From CDs WHERE Title LIKE 'Super%';     

Kaynak Adres  :  http://shokhirev.com/nikolai/abc/sql/sql.html

Saygılarımla Orhan Türk 

FacebookDigg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

SQL SERVER, SQLite ,

Sayfa 0.015625 saniyede yuklendi.