Если Вы не возражаете использовать JavaScript, можно установить непрозрачность введенного файлом к 0, поместить стилизованное управление в вершину через z-индекс и отправить clickevents от кнопки до введенного файлом. Посмотрите здесь для техники: http://www.quirksmode.org/dom/inputfile.html
Firebird - отличный выбор. Он отвечает всем вашим требованиям, для него доступны отличные инструменты администрирования (IBExpert, даже бесплатная версия - лучший инструмент, который я когда-либо использовал для БД), и вы можете написать свои собственные определяемые пользователем функции в Delphi для особых требований. ваше приложение может иметь. Группа поддержки в группах Yahoo, кажется, перепрыгивает через любые запросы поддержки, которые кто-либо отправляет. В общем, для своего настольного приложения я не думаю, что мог бы сделать лучше.
Почему никто еще не упомянул базу данных MS Access? Необходимые драйверы (ADO / Jet) предустановлены с каждой последней версией Windows (XP, Vista ...), поддерживают многопользовательский режим, шифрование, BLOB-объекты и SQL и работают достаточно быстро. Однако помните о максимальном размере базы данных.
edit: Я действительно не понимаю, почему этот ответ был отклонен. Я несколько раз использовал базы данных доступа MS с Delphi, и это работало хорошо. Конечно, он не предназначен для тяжелых многопользовательских инсталляций и не самый быстрый, но это не было обязательным требованием в вопросе.
Опять же, результаты выглядят ошеломляющими, поскольку каждый ответ относится к разной базе данных.
Я голосую за SQLite.
Однако ... похоже, что база данных Access могла бы ты тоже в порядке. Требуется нулевая установка, только Windows и ADO или что-то подобное, и все готово.
Вот ссылка на ограничения доступа.
http://www.databasedev.co.uk/access_specifications.html
Джон
Мне очень повезло с DBISAM . Он был заменен на ElevateDB , который я бы использовал для новых проектов.
Мне также нравится, что я могу выполнить установку XCopy.
Взгляните на NexusDB . Мы нашли его надежным и быстрым, и вокруг него есть хорошее сообщество.
MySQL is always an obvious choice. You can embed it in your application so you don't need a server (you just need to include libmysqld.dll to get full database functionality).
It's powerful, fast, fairly lightweight, and when needed, you can just switch to a "normal" MySQL server without having to change your code or queries.
No installation is needed.
There's a wealth of free examples, documentation, tools and drivers available for MySQL in general, but also in combination with Delphi.
...........
Here's the checklist:
Low or no buyin cost. It has 2 licences: GPL (Free) and a commercial one
No distribution fees. As far as i know, you can redistribute it freely
Easily handle upto 35,000 records with no problems, ideally up to 100k. I'm using it with tables that have up to 30.000.000 records, and it works without sweating (if you think carefully about your queries of course)
Supports multiple tables (in this case up to 10) check
Blob support (binary objects, images, etc.) check
Can be distributed as part of the application install set. I.E. User does not have to someone else's website to download database installer. just add libmysqld.dll, and that's it
Can be installed and configured by install set with minimal user interaction. My target userbase is not technically inclined. No install needed. It embeds in your app
Reasonably fast performance. It's very fast I can tell you
Support for standard SQL statements (or something reasonably close) check
Support for multiple indexes check
Size of database installation LibMySqlD.dll is a couple of megabytes
Size of database once installed on user's system. Depends on your database of course. It's not compressed
Multi-user support No multi-user support in the embedded version as far as I know
Encryption Encrypted data files are not natively supported, but 3rd party solutions exist
Scalability If your embedded server cannot handle stuff, switching to a "normal" or external one can be done without changing code or queries
...........
Limitations:
You don't have replication or events, there's just a single InnoDB thread, there is no authentication or authorization mechanism, and only your application can access the database (makes sense for an embedded database).
Мне повезло с абсолютной базой данных ComponentAce . Он компилируется в ваше приложение, так что вы просто получаете свою программу и файл базы данных. Он совместим с SQL 92 с большими двоичными объектами, не слишком раздувает ваш код, имеет многопользовательский режим и доступен по цене от 100 евро. Исходный код и многопользовательские опции стоят около 350 евро, это недешево, но без лицензий на распространение.
PostgreSQL - отличный сервер баз данных. Он занимает очень мало места, и вы можете легко настроить установку. Он весит не более 10 МБ при отправке и может быть настроен различными способами для оптимизации производительности или использования системы.
Существует интерфейс delphi: http://dbslim.berlios.de/
Одна особенность PostgreSQL заключается в том, что он очень хорошо масштабируется (от очень маленьких развертываний до крупных). Я использую его в нескольких проектах, и мне он очень понравился.
+100 для Firebird SQL Embedded, полной СУБД в DLL размером 5-6 МБ. Поддерживает все ваши требования и многое другое
Забавно, никто об этом еще не упомянул, но SQL Server Express (бесплатный) сделает все, что вам нужно. Версия Express имеет ограничение на размер базы данных 4 ГБ. Вы можете использовать Devart's SQL Server Direct Access Components (SDAC для краткости) для связи с ним в вашем приложении Delphi.
Кроме того, возможно, стоит обратить внимание на 2005 edition . поскольку требования к установке не такие тяжелые (для 2008 года требуется .NET 3.0).
ElevateDB - это встроенный SQL ядро базы данных, которое можно скомпилировать прямо в ваше приложение и предлагает локальные одно- и многопользовательские доступ (обмен файлами) и клиент-серверный доступ с предоставленными ElevateDB придерживается подмножества Стандарт SQL 2003 (ANSI / ISO 9075).
Некоторые из стандартных функций в ElevateDB включают:
Хорошим вариантом было бы использовать Sqlite . Существует оболочка для Delphi 2009 .
Она очень, очень хорошо обрабатывает БД такого размера, ее можно совершенно бесплатно использовать и распространять, она стабильна, надежна и поддерживает практически все ваши требования. .
DiSqlLite (еще одна оболочка для SQLLIte) - хороший выбор. Существует множество утилит управления , которые помогут вам начать работу. Развертывание очень простое. Я использовал его в многопользовательском проекте, написав сервер delphi n-Tier, который выполнял весь доступ к базе данных.
Другой вариант - Dbase IV , V формат с полной многопользовательской поддержкой автоматического редактирования и обновления материала. Я рекомендовал Topaz с сайта www.softsci.com
. Я использую его для многопользовательских и настольных приложений. База данных никогда не выходит из строя и обрабатывает менее миллиона записей на одном дыхании.
Vitisan
Использование встроенного MySQL (libmysqld.dll) легко и удобно.
Но у вас НЕ есть права распространять libmysqld.dll с вашим приложением, если вы не:
Как и Стив, меня тоже интересует простой в использовании инструмент для работы с базами данных. Я не особо много программировал на Delphi последние 5-6 лет. Я начал с Turbo Pascal 3.0, перешел на TP5, купил TP6 под названием Borland на следующий день и понизил рейтинг до TP5.5. Я купил Delphi 3 Professional, обновил его до Delphi 5 Enterprise, и это то, что у меня есть сейчас. Я только что скачал пробную версию Delphi 2010.
Я был разочарован отсутствием простых в использовании и простых в развертывании баз данных, с которыми взаимодействует Delphi. Мне нравится SQL, и я хочу, чтобы мой код SQL находился внутри хранимых процессов. Я хочу иметь возможность тестировать свой SQL-код и проверять свои данные как внутри, так и вне моего приложения.
Я только что провел последние 2,5 часа, изучая ElevateDB и читая Форумы . Я очень впечатлен тем, как они отвечают на вопросы пользователей. Я надеюсь, что этот продукт будет работать так, как я думаю. Я только что подписался на пробную загрузку.
Если NexusDB слишком дорог, вы можете попробовать FlashFiler, который является бесплатной базой данных с открытым исходным кодом, написанной на Delphi. Я думаю, что она является предком NexusDB. С тех пор, как она стала открытой, она практически не поддерживается, но она хорошо документирована и отвечает всем вашим требованиям.
FlashFiler бесплатен, поддерживает блобы, очень большое количество записей, индексы и таблицы. Он может быть встроен в одноисполняемую программу (не требующую DLL) или работать как многопользовательская база данных клиент-сервер. Она работает быстро и обеспечивает доступ как на уровне SQL, так и на уровне записей. Имеется легкое встроенное шифрование, или вы можете добавить свои собственные процедуры.
Например, у меня есть программа, в которую она встроена как однопользовательская база данных, исполняемый файл занимает 3 МБ и не требует никаких DLL. Она легко обращается к 50 таблицам общим размером 15 МБ. (Я также использую FlashFiler с гораздо большими клиент-серверными базами данных)
.