I'd like to use UTF-8 standard for multi language strings into my db, for example I want to insert some strings in russian and retrieve them for later use. At the moment I get ??? signs instead of russian characters in my db. Is there a way to set my db to work with multiple language characters?
I found some posts about PRAGMA
, but I can't get it work, something like:
await Database.ExecuteAsync("PRAGMA encoding='UTF-8'");
I am using SQLite.Net-PCL, System.Data.SQLite and SQLite for Universal Windows Platform as references.
My actual database creation 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 My insert query is:
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();
}
}
}
where singSqlQuery
is a usual sql query like:
INSERT OR REPLACE INTO my_tab (id,name) VALUES('1','some characters');