Не удалось подключить базу данных Sqlite со специальными символами в пути
Я использую SQLite для Windows Runtime (Windows 8.1) и расширение SQLite.Net-PCL. Я работаю с базами данных в локальной папке пользователя. Путь к этой папке содержит имя пользователя. Поэтому иногда он может содержать специальные символы (например, "š"). Он работает правильно, когда я создаю соединение и открываю базу данных. Однако проблема возникла при попытке подключить другую базу данных. Я всегда получал исключение "CannotOpen".
Я полагаю, что проблема основана на другой кодировке (UTF-8 в SQLite, UTF-16 в.Net), но мне не удалось ее решить. Sqlite содержит методы для открытия базы данных в UTF 16 (sqlite3_open16). Но такого метода для операторов SQL не существует.
string dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "sqlite1.db");
string dbPath2 = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "sqlite2.db");
using (SQLite.Net.SQLiteConnection conn = new SQLite.Net.SQLiteConnection(new SQLitePlatformWinRT(), dbPath))
{
var cmd = conn.CreateCommand("ATTACH '" + dbPath2 + "' AS second;");
cmd.ExecuteNonQuery(); // -> it throws "CannotOpen" exception if dbPath2 contains special characters
}
Спасибо за вашу помощь!