2016-04-12 4 views
0

Я хотел бы использовать стандарт UTF-8 для нескольких языковых строк в моем db, например, я хочу вставить некоторые строки на русском языке и получить их для последующего использования. На данный момент я получаю ??? знаки вместо русских символов в моем db. Есть ли способ заставить мой db работать с несколькими языковыми символами?Многоязыковые символы в SQLite Universal Windows 10

Я нашел некоторые сообщения о PRAGMA, но я не могу получить его работу, что-то вроде:

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

Я использую SQLite.Net-PCL, System.Data.SQLite и SQLite для универсальной платформы Windows в качестве ссылок.

Мой реальный код создания базы данных:

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 Моя вставка запроса:

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(); 
       } 
      } 
     } 

где singSqlQuery это обычный SQL запрос типа: INSERT OR REPLACE INTO my_tab (id,name) VALUES('1','some characters');

+0

Какой набор символов для вашей базы данных и сортировка? – Rob

+0

Я новичок в windows, я знаю, что в Android он работает автоматически, где я могу установить свой набор символов и 'collation' –

+0

Я не знаком с SQLite, поэтому вы можете посмотреть здесь: http: // stackoverflow.com/questions/1188749/how-to-change-the-collation-of-sqlite3-database-to-sort-case-insensitively - обратите внимание, что если это * является * причиной, значит, ваши исходные данные были вставлены и был поврежден, так что это исправит вашу проблему только для вставок * после * изменения сортировки – Rob

ответ

2

SQLite полностью по умолчанию сохраняет данные Unicode. Вам не нужно ничего делать, это просто работает. Если вы не понимаете, что делаете, проблема связана с вашей вставкой или извлечением. Скорее всего, где-то происходит конверсия, которую вы не намерены делать. Вы можете использовать параметризованный запрос для вставки, если вы этого еще не сделали.

+0

yep, проблема была в вставке, я просто немного изменил свой SQL-запрос, используя параметризованное решение @chue x и мою проблему уходит. –

Смежные вопросы