İyi akşamlar. Ne hikmetse benim player projesinde hep bi sorun çıkıyo. Bende sorunu şimdilik geçip başka işleri görüyorum zaman kaybı olmasın diye. Şöyle bir küçük tablom var. Kanallar için.
var
DB: string;
begin
DB := ExtractFilePath(ParamStr(0)) + 'Database\db.s3db';
with Main do
begin
FDC.DriverName := 'SQLITE';
FDQ.Connection := FDC;
FDC.Params.Values['Database'] := DB;
FDC.Params.Values['CharacterSet'] := 'utf8';
FDC.Open;
end;
Ben türkçe karakter veri eklediğimde - ? - ve latın harf olarak görünüyor.
SQLite veritabanını yedekle ve yeni baştan bu setup ile create ederek dener misin ? Belki de CREATE ederken farklı, open ederken farklı character set kullanıyorsundur ..
With FDQ do
begin
Active := False;
//Connection := FDC;
SQL.Clear;
SQL.Add( 'CREATE TABLE IF NOT EXISTS channels (' );
SQL.Add( ' name nvarchar(50),');
SQL.Add( ' url nvarchar(250)');
SQL.Add( ' );');
ExecSQL;
end;
mysql de yaparken unikod desteği seçe biliyorduk sorun vermiyordu.
AliZairov yazdı:İyi akşamlar. Ne hikmetse benim player projesinde hep bi sorun çıkıyo. Bende sorunu şimdilik geçip başka işleri görüyorum zaman kaybı olmasın diye. Şöyle bir küçük tablom var. Kanallar için.
var
DB: string;
begin
DB := ExtractFilePath(ParamStr(0)) + 'Database\db.s3db';
with Main do
begin
FDC.DriverName := 'SQLITE';
FDQ.Connection := FDC;
FDC.Params.Values['Database'] := DB;
FDC.Params.Values['CharacterSet'] := 'utf8';
FDC.Open;
end;
Ben türkçe karakter veri eklediğimde - ? - ve latın harf olarak görünüyor.
Selam bende bu kodları kullanıyorum Türkçe karakter sorunu olmuyor...
Sen dediğimi yaptın mı ?Veritabanını yedekle, sil ve yeniden create edip dener misin ?!
Sonraki aşama nerede görüntülediğin ile ilişkili. Orada Unicode seçili olmayabilir. Önce bir AsString ile okduğun değerleri ShowMessage ile bakacaksın, onda doğru ise yeni bir DBEdit vs. koyup onun üzerinde deneyeceksin vs vs.
with Main.FDQ do
begin
Close;
SQL.Clear;
SQL.Add('INSERT INTO channels ');
SQL.Add('( name , url )');
SQL.Add(' VALUES ');
SQL.Add(' (:d0 , :d1 ) ');
ParamByName('d0').AsString := 'ƏÜĞ';
ParamByName('d1').AsString := 'http';
ExecSQL;
end;
with Main.FDQ do
begin
SQL.Clear;
SQL.Text := 'Select * From channels';
Open();
end;
ShowMessage(Main.FDQ.FieldByName('name').Text); // ƏÜĞ - ?UG gibi çıktı veriyo.
procedure GO;
const
S = 'ĞÜŞİÖÇğüşiöçıııı';
var
DB: string;
begin
DB := ExtractFilePath(ParamStr(0)) + 'Database\db.s3db';
with Main do
begin
FDC.DriverName := 'SQLITE';
FDQ.Connection := FDC;
FDC.Params.Values['Database'] := DB;
FDC.Params.Values['CharacterSet'] := 'utf8';
//FDC.Open;
end;
with Main.FDQ do
begin
SQL.Clear;
SQL.Text := 'Delete from channels';
ExecSQL;
end;
with Main.FDQ do
begin
Close;
SQL.Clear;
SQL.Add('INSERT INTO channels ');
SQL.Add('( name , url )');
SQL.Add(' VALUES ');
SQL.Add(' (:d0 , :d1 ) ');
ParamByName('d0').AsString := S;
ParamByName('d1').AsString := '';
ExecSQL;
end;
with Main.FDQ do
begin
SQL.Clear;
SQL.Text := 'Select * From channels';
Open();
end;
ShowMessage(Main.FDQ.FieldByName('name').Text);
Application.Terminate;
{
With FDQ do
begin
Active := False;
//Connection := FDC;
SQL.Clear;
SQL.Add( 'CREATE TABLE IF NOT EXISTS channels (' );
SQL.Add( ' name nvarchar(50),');
SQL.Add( ' url nvarchar(250)');
SQL.Add( ' );');
ExecSQL;
end;
end;
}
end;
İyi geceler. Karakter sorunu benim işletim sistemi ayarlarından kaynaklanıyor. Başka pcde sorun olmadı hemen hemen. Malesef çözüm bulamadım. Latın harf kullandım.