Я не забываю иметь ту же проблему - После поиска в сети, я нашел это решение - Из командной строки,
1. > adb shell
2. # sqlite3 /data/data/com.android.providers.settings/databases/settings.db
3. sqlite> INSERT INTO system VALUES(99,’http_proxy', 'proxy:port');
4. sqlite>.exit
РЕДАКТИРОВАНИЕ: Отредактированный ответ для отражения последней версии Android.
SQL Server Compact Edition и SQL Lite кажутся вашими двумя основными вариантами. SQL Server Compact имеет лучшую интеграцию с .NET и обработку даты и времени, поэтому я бы выбрал именно его. Кроме того, распространяемые файлы имеют довольно небольшой вес (2–3 МБ IIRC).
SQL Server Compact позволяет зашифровать базу данных:
http://technet.microsoft.com/en-us/library/ ms172901.aspx
... Но вы должны быть осторожны со строкой подключения, потому что получить незашифрованный пароль, встроенный в клиент, тривиально.
И последнее примечание: выбор SQL Server Compact позволит вам использовать встроенный поставщик LINQ, который может значительно облегчить вашу жизнь.
Вы изучали SQL Server Compact ?
SQL Server Compact 3.5 является бесплатным, простой в использовании встроенный механизм базы данных что позволяет разработчикам создавать надежные Windows для ПК и мобильных устройств приложения, которые работают во всех Windows платформы, включая Windows XP, Vista, Карманный ПК и смартфон.
«Я также не могу заставить пользователя установить для этого отдельную программу» - вы можете распространять необходимые файлы вместе с вашим приложением.
Другое решение - использовать зашифрованный файл xml. Набор данных можно очень легко сохранить и загрузить с помощью файла xml:
Этот ответ ПОЛНОСТЬЮ зависит от того, что у вас есть относительно небольшой набор данных , поэтому рассмотрите его соответственно ...
Рассматривали ли вы сохранение своих объектов в коллекции, а затем сериализовать их на диск?
Вы можете использовать Linq to Objects, чтобы запрашивать их почти так же, как и базу данных, включая соединения и т. д.
Я использовал эту технику в нескольких личных проектах и он отлично работает, ЕСЛИ у вас небольшой набор данных.
Примером является пользовательский поставщик членства, который я написал для ASP.Net, который использует этот метод, если у вас нет доступной базы данных (подумайте очень дешево размещенная среда).
Я тестировал его с нагрузкой до 10 000 пользователей с практически мгновенными ответами (в конце концов, это происходит из памяти). Когда я дойду до 100,
Из вашего краткого описания того, как вы будете его использовать, и его однопользовательского характера, возможно, РСУБД будет излишним, вы могли бы просто сохранить свое небольшое количество данные в текстовом / XML-файле и встроить их как ресурс в исполняемый файл (зашифрованный, если необходимо)
VistaDB поддерживает xcopy (простое развертывание) с полным шифрованием на уровне базы данных или таблицы.
SQLite - это программная библиотека, реализует автономный, бессерверная, с нулевой конфигурацией, механизм транзакционной базы данных SQL. SQLite - наиболее широко применяемый SQL движок базы данных в мире. В исходный код SQLite находится в общественное достояние.
sqlite.phxsoftware.com System.Data.SQLite - это исходный движок базы данных SQLite и полный провайдер ADO.NET 2.0 / 3.5, объединенные в единую сборку смешанного режима. Это полная замена исходному sqlite3.dll (вы даже можете переименовать его в sqlite3.dll, если вы используете его изначально).
список доступных оболочек для C # здесь: http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers в разделе оболочек C #
Я использую здесь: Простая оболочка C # для SQLite , которая является базовой, но достаточной для моих нужд
Также проверьте Db4o , объектную базу данных с открытым исходным кодом. Они поддерживают шифрование базы данных объектов, а также linq, который упрощает выполнение запросов к данным.
jeffa00 указал, что это можно сделать простой сериализацией, если ваш набор данных не очень большой. Вот полная рабочая реализация, показывающая, насколько это просто:
public class DataSerializer<T>
{
static XmlSerializer _serializer = new XmlSerializer(typeof(T));
static SymmetricAlgorithm _encryptionAlgorithm;
public static void SetEncryptionKey(byte[] key)
{
_encryptionAlgorithm = Aes.Create();
_encryptionAlgorithm.Key = key;
}
public static void WriteData(string filePath, T data)
{
using(var fileStream = File.OpenWrite(filePath))
{
var cryptoStream = new CryptoStream(fileStream, _encryptionAlgorithm, CryptoStreamMode.Write);
_serializer.Serialize(cryptoStream, data);
cryptoStream.Flush();
}
}
public static T ReadData(string filePath)
{
using(var fileStream = File.OpenRead(filePath))
{
var cryptoStream = new CryptoStream(fileStream, _encryptionAlgorithm, CryptoStreamMode.Read);
return (T)_serializer.Deserialize(Stream);
}
}
}
С его помощью вы можете сохранить все дерево объектов на диск в зашифрованном виде, просто выполнив:
DataSerializer<MyObjectType>.WriteData(@"c:\somewhere\something.data", myObject);
и прочитав его с помощью:
myObject = DataSerializer<MyObjectType>.ReadData(@"c:\somewhere\something.data");
Это много лучше, чем работать с SQL Server Compact или даже с полным SQL Server, поскольку LINQ to Objects намного мощнее LINQ to SQL. Во многих случаях и быстрее.
Но это работает, только если ваш набор данных легко помещается в ОЗУ.
т очень большой. Вот полная рабочая реализация, показывающая, насколько это просто:public class DataSerializer<T>
{
static XmlSerializer _serializer = new XmlSerializer(typeof(T));
static SymmetricAlgorithm _encryptionAlgorithm;
public static void SetEncryptionKey(byte[] key)
{
_encryptionAlgorithm = Aes.Create();
_encryptionAlgorithm.Key = key;
}
public static void WriteData(string filePath, T data)
{
using(var fileStream = File.OpenWrite(filePath))
{
var cryptoStream = new CryptoStream(fileStream, _encryptionAlgorithm, CryptoStreamMode.Write);
_serializer.Serialize(cryptoStream, data);
cryptoStream.Flush();
}
}
public static T ReadData(string filePath)
{
using(var fileStream = File.OpenRead(filePath))
{
var cryptoStream = new CryptoStream(fileStream, _encryptionAlgorithm, CryptoStreamMode.Read);
return (T)_serializer.Deserialize(Stream);
}
}
}
С его помощью вы можете сохранить все дерево объектов на диск в зашифрованном виде, просто выполнив:
DataSerializer<MyObjectType>.WriteData(@"c:\somewhere\something.data", myObject);
и прочитав его с помощью:
myObject = DataSerializer<MyObjectType>.ReadData(@"c:\somewhere\something.data");
Это много лучше, чем работать с SQL Server Compact или даже с полным SQL Server, поскольку LINQ to Objects намного мощнее LINQ to SQL. Во многих случаях и быстрее.
Но это работает, только если ваш набор данных легко помещается в ОЗУ.
т очень большой. Вот полная рабочая реализация, чтобы показать, насколько это просто:public class DataSerializer<T>
{
static XmlSerializer _serializer = new XmlSerializer(typeof(T));
static SymmetricAlgorithm _encryptionAlgorithm;
public static void SetEncryptionKey(byte[] key)
{
_encryptionAlgorithm = Aes.Create();
_encryptionAlgorithm.Key = key;
}
public static void WriteData(string filePath, T data)
{
using(var fileStream = File.OpenWrite(filePath))
{
var cryptoStream = new CryptoStream(fileStream, _encryptionAlgorithm, CryptoStreamMode.Write);
_serializer.Serialize(cryptoStream, data);
cryptoStream.Flush();
}
}
public static T ReadData(string filePath)
{
using(var fileStream = File.OpenRead(filePath))
{
var cryptoStream = new CryptoStream(fileStream, _encryptionAlgorithm, CryptoStreamMode.Read);
return (T)_serializer.Deserialize(Stream);
}
}
}
С его помощью вы можете сохранить все дерево объектов на диск в зашифрованном виде, просто выполнив:
DataSerializer<MyObjectType>.WriteData(@"c:\somewhere\something.data", myObject);
и прочитав его с помощью:
myObject = DataSerializer<MyObjectType>.ReadData(@"c:\somewhere\something.data");
Это много лучше, чем работать с SQL Server Compact или даже с полным SQL Server, поскольку LINQ to Objects намного мощнее LINQ to SQL. Во многих случаях и быстрее.
Но это работает, только если ваш набор данных легко помещается в ОЗУ.
Ответ может зависеть от подробностей; тем не менее, C # SQLite ( http://code.google.com/p/csharp-sqlite/ ) может быть вариантом. Если в вашей базе данных будет меньше 4 ГБ данных, тогда SQL Server Compact - идеальный кандидат; без установки, без настройки, развертывание xcopy.