2016-04-12 8 views
0

Ich möchte UTF-8-Standard für mehrsprachige Zeichenfolgen in meine Datenbank verwenden, zum Beispiel möchte ich einige Zeichenfolgen in Russisch einfügen und sie für die spätere Verwendung abrufen. Im Moment bekomme ich ??? Zeichen anstelle von russischen Zeichen in meinem db. Gibt es eine Möglichkeit, meine Datenbank mit mehreren Zeichen zu arbeiten?Multi Sprache Zeichen in SQLite Universal Windows 10

fand ich einige Beiträge über PRAGMA, aber ich kann es nicht bekommen, so etwas wie:

await Database.ExecuteAsync("PRAGMA encoding='UTF-8'");

I SQLite.Net-PCL bin mit, System.Data.SQLite und SQLite für Universal Windows Platform als Referenzen.

Meine eigentliche Erstellung der Datenbank-Code:

public static string SQL_DB_PATH = Path.Combine(ApplicationData.Current.LocalFolder.Path, "my_db"); 

    public static void createDbMethod() { 
      using (var conn = new SQLiteConnection(new SQLitePlatformWinRT(), SQL_DB_PATH)) { 

       try { 
        // Start transaction 
        conn.BeginTransaction(); 
        try { 
         // Execute table creation commands...      
         conn.CreateTable<MyTableOne>(); 
         conn.CreateTable<MyTableTwo>(); 
         conn.CreateTable<MyTableThree>(); 

         //Commit transaction 
         conn.Commit(); 

         } catch (Exception ex) { 
         //handle exception 
         // Rollback transaction 
         conn.Rollback(); 
         } 

        } catch (Exception e) { 
        //handle exception 

        } finally { 
        conn.Close(); 
        } 
       } 
      } 

EDIT Meine INSERT-Abfrage ist:

public static void executeSqlQuery(string singSqlQuery) { 
     using (var conn = new SQLiteConnection(new SQLitePlatformWinRT(), SQL_DB_PATH)) { 

      // Open connection 
      try { 
       // Start transaction 
       conn.BeginTransaction(); 
       try { 
        // Execute commands... 
        conn.Execute(singSqlQuery); 

        // Commit transaction 
        conn.Commit(); 

        } catch (Exception ex) { 
        // Rollback transaction 
        conn.Rollback(); 
        } 

       } catch (Exception e) { 
       //handle exception 

       } finally { 
       conn.Close(); 
       } 
      } 
     } 

wo singSqlQuery ist eine übliche SQL-Abfrage wie: INSERT OR REPLACE INTO my_tab (id,name) VALUES('1','some characters');

+0

Was ist Ihr Datenbankzeichensatz und Sortierfolge? – Rob

+0

Ich bin Anfänger in Windows, ich weiß, dass in Android es automatisch funktioniert, wo kann ich Ihre 'Zeichensatz' und' Kollation' setzen –

+0

Ich bin nicht vertraut mit SQLite, so dass Sie vielleicht hier aussehen: http: // stackoverflow.com/questions/1188749/how-to-change-the-collation-of-sqlite3-database-to-sort-case-insensitively - beachten Sie, dass, wenn dies * die Ursache ist, es bedeutet, dass Ihre ursprünglichen Daten eingefügt wurden und wurde beschädigt, so dass dies nur Ihr Problem für Einfügungen beheben * nach * der Kollation Änderung – Rob

Antwort

2

SQLite voll unterstützt standardmäßig das Speichern von Unicode-Daten. Sie müssen nichts Besonderes tun, es funktioniert einfach. Wenn Sie nicht herauskommen, was Sie gerade tun, ist das Problem mit Ihrem Einfügen oder Retrieval. Es ist höchstwahrscheinlich eine Konvertierung irgendwo passiert, die Sie nicht beabsichtigen. Möglicherweise möchten Sie eine parametrisierte Abfrage für die Einfügung verwenden, wenn Sie dies nicht bereits tun.

+0

ja, das Problem war bei der Einfügung, ich habe nur ein bisschen meine SQL-Abfrage geändert, mit parametrierte @chue x Lösung und mein Problem geht weg. –

Verwandte Themen