Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

SQLite Türkçe Karakter Arama ve Sıralama Sorunu

Konu, 'Veritabanları' kısmında siirsen tarafından paylaşıldı.

  1. siirsen

    siirsen Aktif Üye

    Kayıt:
    13 Ağustos 2008
    Mesajlar:
    361
    Beğenilen Mesajlar:
    0
    Aşağıda, tablo yapım, sql sorgum ve sıralama kodlarım var.
    Türkçe olmayan karakterlerde arama yapıyor ancak Türkçe bir karakteri ekleyince arama işlemi sıfır sonuç dönderiyor. Örnek, arama kutusuna öğr. ismini AS yazınca arıyor İ ekleyince arama sonucu yok. Bu arada, veritabanından çektiğim bütün bilgileri Listwiev'de görebiliyorum.
    Sorunun kaynağını internette aradım ancak bulamadım, nedir bunun nedeni?
    Kod:
     
    var cnnquery = cnn.Query<TABLOOKUL>("CREATE TABLE TABLOOKUL (vID integer NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, vSINIFI varchar, vNUMARASI integer, vADISOYADI varchar, vOKULU varchar, vYILI varchar, vOGRETMENI varchar )");
    
    SQL = $"Select * FROM TABLOOKUL WHERE TABLOOKUL.vADISOYADI Like '%{txtADSOYAD.Text}%' ORDER BY TABLOOKUL.vADISOYADI ASC , TABLOOKUL.vSINIFI ASC";
    
    List<TABLOOKUL> listKM = CNNVT.Query<TABLOOKUL>(SQL).ToList<TABLOOKUL>();
    
    var result2 = listKM.OrderBy(a => a.vADISOYADI).ThenBy(a => a.vSINIFI);
    
    
     
  2. siirsen

    siirsen Aktif Üye

    Kayıt:
    13 Ağustos 2008
    Mesajlar:
    361
    Beğenilen Mesajlar:
    0
    İnternette o kadar aramama rağmen hala yapamadım. Universal windows platform projesinde sqlite kullanıyorum ancak aramalarda Türkçe karakter gördüğü yerde hiç bir şey bulunamadı sonucunu veriyor.
    Programa splite ile devam etmenin bu durumda benim için hiç bir önemi kalmıyor, çözümü varsa lütfen!
    Ya da kullanılabilecek başka bir veritabanı önerirseniz sevinirim.
     
  3. ali guner

    ali guner Üye

    Kayıt:
    1 Şubat 2017
    Mesajlar:
    189
    Beğenilen Mesajlar:
    31
    Şehir:
    istanbul
    ms sql falan kullanamıyor musun ? kullandığın sistemin sorgu dilini ms sql de olduğu gibi değiştirmen gerek. bilmiyorum senin sql in ayarları nasıl yapılır ama ms sql de dil türkçe zaman dilimi türkiye gibi seçebiliyorsun.

    bunları yapmadığın sürece unicode hatalarıyla uğraşırsın.
     
    siirsen bunu beğendi.
  4. siirsen

    siirsen Aktif Üye

    Kayıt:
    13 Ağustos 2008
    Mesajlar:
    361
    Beğenilen Mesajlar:
    0
    Konuda araştırma yaparken bulduğum sıralama sorunu için çözüm link link2 link3 eklemek istedim.
    Link 3 den bir fikir edindim, her arama yapılacak sütuna bir de türkçe karakterden arındırılmış bir sütun daha ekleyip bu sütunda sorgulama yapıp diğer sütundaki verileri getirmek...

    Fikir güzel ama konunun basit bir çözümü olmalı...
     
  5. siirsen

    siirsen Aktif Üye

    Kayıt:
    13 Ağustos 2008
    Mesajlar:
    361
    Beğenilen Mesajlar:
    0
    Daha önce veritabanı olarak access den başka hiç bir şey kullanmadım. Ciddi olarak eğildiğim bu ikincisi.
    Program windows yüklü telefonda çalışması gerekiyor. Veritabanı olarak ya xml veya sqlite kullanmalıyım sanırım. Bilemiyorum.
     
  6. ali guner

    ali guner Üye

    Kayıt:
    1 Şubat 2017
    Mesajlar:
    189
    Beğenilen Mesajlar:
    31
    Şehir:
    istanbul
    Keşke sunucu tabanlı database kullansan. Hem tek bir noktada toplayabilirsin istediğin bilgileri. Bir çok kullanıcı olacak ise, tümü cihaz/platform bağımsız hareket edebilir, sen de profesyonel sql server hizmeti almış olursun.

    En ucuz hosting şirketleri bile veriyor ms sql artık.

    Çok farkı yok sql sorgularının. Hem bu tip sorunlarla da uğraşmazsın. 2 - 3 gününü alır uyum sağlaman.
     
    siirsen bunu beğendi.
  7. siirsen

    siirsen Aktif Üye

    Kayıt:
    13 Ağustos 2008
    Mesajlar:
    361
    Beğenilen Mesajlar:
    0
    İnternetten bağımsız çalışsın istiyorum programın.
    Telefonda çalışacak bu programı kendi işimi kolaylaştırmak amacı ile yapıyorum, başka bir kaygım yok.
    Çözüm bulsam güzel olurdu, hızlı giden bütün umutlarım söndü şu anda; türkçe karakterlerle sorgu yapmak programın en temel görevi arasında idi.
    UWP programı yapıyorum, bitirdiğimde çok havalı olacaktı benim için bu program.
    Bunun için son 15 günde vb.netden geçerek C# dilini öğrenmeyi bile az çok başardım gibi.
    Bir taraftan benzer sorunların çözümü internette bolca olmalı diye düşünüyorum, bir taraftan da bir türlü bulamıyorum çözümünü.
    İlginiz için teşekkür ederim.
     
  8. ali guner

    ali guner Üye

    Kayıt:
    1 Şubat 2017
    Mesajlar:
    189
    Beğenilen Mesajlar:
    31
    Şehir:
    istanbul
    şöyle bir şey geldi aklıma, peki * sorgusu yaptığında ne oluyor ?
    türkçe karakterli bilgiler geliyor mu ?
    misal
    ayşegül yılmaz diye bir türkçe karakterler olan kayıt var ise geliyor mu ?
    türkçe karakterler ile kayıt ettiğin tüm bilgiler doğru kayıt edilmiş mi ?
    eğer geliyor ise,
    demek ki koşul sorgunda where türkçe karakterler doğru tanınmıyor.

    şöyle birşey dener misin, biraz zahmetli tabi. aramak istediğini bir sql kayıdı gibi bir tabloya (geçici tabloya) kayıt et (ki where sorgusundaki gibi hatalı okunmayacak belki de o vakit) sonra kayıt ettiğin bu koşul kelimelerini kullanarak koşul sorgusuna girdi / argüman olarak arz et.

    koşul sorgunda kullanacak kelime tablosu oluştur ve insert et koşul kelimesini bu tabloya
    sonra bu tablo kayıdını kullanarak koşul sorgunu oluştur.
    select * where (Koşul tablodaki kayıt edilen kelime)

    bak bu çalışır belki.
     
  9. siirsen

    siirsen Aktif Üye

    Kayıt:
    13 Ağustos 2008
    Mesajlar:
    361
    Beğenilen Mesajlar:
    0
    Program hatasız çalışıyor ta ki AY yazana kadar Listwiev'de sonuçları görebiliyorum. Türkçe karakterdeki kişiler de bu listede görünüyor. Ancak AYŞ yazdın mı veritabanında AYŞE adlı kişi olsa bile sonuç yok..
    Sorgu yalnızca Türkçe karakterler üzerinde böyle davranıyor.

    Veritabanını açıp inceledim. Kayıtlar doğru bir şekilde kayıtlı.

    Alıntı yaptığım sözlerinizi pek anlamadım.
     
  10. ali guner

    ali guner Üye

    Kayıt:
    1 Şubat 2017
    Mesajlar:
    189
    Beğenilen Mesajlar:
    31
    Şehir:
    istanbul
    select * from tablo
    dediğinde türkçe kayıtlar geliyor mu ?
    geliyor ise,
    sormak istediğini / aramak istediğini bir tabloya kayıt et
    misal
    ayşegül yılmaz diye bir kişi var misal
    sen de gül kelimesini arayacaksın
    aranacak kelime tablosu
    create table aranacakkelimeler tablosu
    insert et bu aranacakkelimeler tablosuna gül kelimesini (tek satırlık bir kayıt olduğunu düşün)

    sonra select isim, soyisim from kişiler where isim like %(select top 1 from aranacakkelimelertablosu)%

    anlatabildim mi ?
     
    siirsen bunu beğendi.
  11. ali guner

    ali guner Üye

    Kayıt:
    1 Şubat 2017
    Mesajlar:
    189
    Beğenilen Mesajlar:
    31
    Şehir:
    istanbul
    orada mısın ?
    buradaki amaç şudur,
    encode ediyordur kayıt ederken, sorgularken sorgu kelimesini encode etmiyordur.

    dolayısı ile iki format da aynı olmalı ki uyumlu olsunlar.

    belki kayıt ederken farklı bir format kullanıyordur, sorgularken ayrı bir format. dolayısıyla sorgunu da bir tabloya kayıt et. ikisi de aynı formatta olur o vakit.

    iki tabloyu kullanarak sorgu cümlesi oluştur. ikisi de kayıt edildiğinden aynı format (belki encode oluyor) yani aynı dil üzerinden konuşacak/anlaşacaklardır.

    neler yapıyorsun orada mısın :D
     
    siirsen bunu beğendi.
  12. siirsen

    siirsen Aktif Üye

    Kayıt:
    13 Ağustos 2008
    Mesajlar:
    361
    Beğenilen Mesajlar:
    0
    Teşekkür ederim söylediğinizi biraz anladım, bunun için sorgu kelimesini anladığı formata dönüştürmek gerekmez mi?
    İ Ö Ü gibi harfleri nasıl anlıyorsa ona dönüştürmek...

    Şu anda zamanım yok, hafta sonuna kaldı. Tekrar teşekkürler
     
  13. ali guner

    ali guner Üye

    Kayıt:
    1 Şubat 2017
    Mesajlar:
    189
    Beğenilen Mesajlar:
    31
    Şehir:
    istanbul
    hayır isim soyisimi atarken kendi kendine özel bir biçimle kayıt ediyor galiba o.

    yani kayıt ediyor ama karşılaştırma için o kaydı çektiğinde karşılaştırma kelimesi ile eşleştiremiyor formatları demek ki.

    ikisini de kayıt et. ikisini de aynı formatta kayıt edildiğini garantileme şansın olabilir o vakit.
     
  14. siirsen

    siirsen Aktif Üye

    Kayıt:
    13 Ağustos 2008
    Mesajlar:
    361
    Beğenilen Mesajlar:
    0
    Ali bey, bu dosyada arama sorunu ile ilgili kısmı paylaşıyorum. Söylediğinizi pek anlamadım ama siz yapabilirseniz buyurun.
     

    Ekli Dosyalar:

  15. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    678
    Beğenilen Mesajlar:
    185
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    siirsen bunu beğendi.
  16. siirsen

    siirsen Aktif Üye

    Kayıt:
    13 Ağustos 2008
    Mesajlar:
    361
    Beğenilen Mesajlar:
    0
    Androide program yazmıyorum, windowsa; Universal windows platformunda çalışacak şekilde olsun istedim.
    İki üst iletide proje dosyasının ilgili kısmını paylaştım, hatta başka bir link daha vereyim burada.
     
  17. siirsen

    siirsen Aktif Üye

    Kayıt:
    13 Ağustos 2008
    Mesajlar:
    361
    Beğenilen Mesajlar:
    0