Это действительно зависит, в чем Вы нуждаетесь. Для однопользовательских приложений Встроенные Firebird или SQLite являются, вероятно, лучшим выбором (и цена является правильной). На другом конце, если Вы нуждаетесь в поддержке для большого количества многочисленных пользователей, необходимо, вероятно, использовать обычный Firebird вместо Встроенной версии (сервер прост установить так, у Вас не будет многого проблемами здесь).
И если бы Вам нужно что-то промежуточное для умеренного многопользовательского приложения, одна из плоских баз данных была бы лучше. Я нашел что Абсолютная База данных ComponentAce лучший выбор для моих потребностей, чем DBISAM, NexusDB или VistaDB.
Это оставляет относительно маленькое место (никакой DLLs), это - однофайловый дб (необходимость для меня), Unicode поддержек, сжатие BLOB, crypting, и технические пределы кажутся производящими впечатление для плоской базы данных. Кроме того, поддержка была хороша в немногих случаях, когда мне была нужна она.
Для недостатков, я заметил, что это не поддерживает вложенные транзакции, но кроме которого, у меня не было проблем.
Мой фрагмент кода для строковых файлов чтения / записи:
private String readTextFile(String fName) {
String result = null;
FileConnection fconn = null;
DataInputStream is = null;
try {
fconn = (FileConnection) Connector.open(fName, Connector.READ_WRITE);
is = fconn.openDataInputStream();
byte[] data = IOUtilities.streamToBytes(is);
result = new String(data);
} catch (IOException e) {
System.out.println(e.getMessage());
} finally {
try {
if (null != is)
is.close();
if (null != fconn)
fconn.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
return result;
}
private void writeTextFile(String fName, String text) {
DataOutputStream os = null;
FileConnection fconn = null;
try {
fconn = (FileConnection) Connector.open(fName, Connector.READ_WRITE);
if (!fconn.exists())
fconn.create();
os = fconn.openDataOutputStream();
os.write(text.getBytes());
} catch (IOException e) {
System.out.println(e.getMessage());
} finally {
try {
if (null != os)
os.close();
if (null != fconn)
fconn.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}