2011-02-06 32 views
8

Necesito un SMALL/LIGHTWEIGHT control de DB (tal vez entregado como un único archivo PAS) que puedo integrar directamente en mi aplicación. Necesito almacenar cantidades relativamente pequeñas de datos en un pequeño número de tablas y quiero acceder rápidamente a algunas columnas. Sé que Delphi 7 tiene ese buen BDE, pero no quiero molestar al usuario con el proceso de instalación.Delphi embedded DB

utilizo Delphi 7.


EDIT:
Creo que la pregunta equivocada. Por lo tanto, esto es lo que realmente se necesita:
How to store dynamic data (unknown number of fields) to a file?

+0

Ver la pregunta: http://stackoverflow.com/questions/222699/which-embedded-database-to-use-in-a-delphi- aplicación – lkessler

+0

¡Oye! Resumiré la pregunta un poco con 1) como se dijo, usted necesita un motor de almacenamiento solamente 2) ya que quiere que esté enlazado estáticamente, la licencia importa 3) Aceptar archivos múltiples o no. Personalmente iría a TClientDataSet o ADO/Jet –

Respuesta

1

He tratado (organizado por ligero):

  • NexusDB - comercial, demasiado grande para lo que necesito; agrega un poco de sobrecarga
  • DISQLite - parece poderosa; difícil de usar
  • kbmMemTable - comercial, INDOCUMENTADOS DE USUARIOS DE PRUEBAS (no se puede probó a menos que compre la documentación, en primer lugar, que conviene al propósito del concepto de prueba)
  • TDbf - gratis, pero no tendrá soporte; también carece totalmente de documentación
  • Synopse BigTable - parece ser la solución que necesito. Consiste en 2 archivos PAS solamente.

En algunas situaciones, un sistema personalizado puede ajustarse mejor que uno general. Entonces, para lo que necesito, adaptaré mi propio sistema. Como sé el tamaño/tipo de datos, puedo crear campos que se adapten perfectamente a mis datos. El tamaño de DB será más pequeño de esta manera y más rápido (además es gratis). :)

Solución: How to store dynamic data (unknown number of fields) to a file?

9

NexusDB ofrece una versión gratuita embedded. Aquí está un Example

+0

. Probé Nexus DB pero es demasiado para mí. Gracias – Ampere

+1

¿De qué manera lo consideras excesivo? Se compila completamente en su aplicación sin dependencias externas (y es modular, por ejemplo, si no necesita usar SQL, no necesita compilar el soporte SQL en su aplicación) y proporciona una funcionalidad similar al BDE que usted dijo en la publicación original que usaría si no fuera por la necesidad de instalarla. –

+0

@Engler. Vea la publicación de PhilW. Por el momento estoy mirando TDBF. Es mucho más pequeño. Agrega casi nada al tamaño de la aplicación y especialmente al tiempo de compilación. – Ampere

8

Si se ha comprometido a no incluir más dependencias con su aplicación, eche un vistazo a TClientDataSet.

Recomendaría algún tipo de base de datos "incrustada". Ejemplo: para usar Firebird como una base de datos integrada, como mínimo, solo debe enviar una DLL. Puede poner esa DLL en su instalador para que el usuario no necesite instalar nada.

+1

Sqlite es otra opción (1 DLL también). – arthurprs

+0

aunque me gusta la alternativa de Nexus DB, TClientDataSet es la mejor manera de hacerlo, en mi opinión, sin mencionar que se envía con Delphi para tantas versiones. – ComputerSaysNo

7

Como alternativa, ¿qué hay de la base de datos TDbf software gratuito? Se compila directamente en su aplicación y es confiable para usos ligeros.

Además, si tiene la edad suficiente para recordar los días en que DBase era la plataforma de base de datos de escritorio estándar, entonces probablemente ya sepa cómo usarlo. :-)

Es en http://tdbf.sourceforge.net

(Si no parece ser una gran cantidad de actividad reciente, entonces es debido a que ha estado presente desde hace 10 años y es muy estable).

Solo un pensamiento.

+0

Gracias. Realmente me gusta TDBF. Acabo de instalarlo. Voy a experimentar con eso. Tengo que ver si es compatible con campos binarios. – Ampere

+1

re: sin actividad, eso es porque el formato dBase (y todas sus horquillas) está obsoleto. –

+0

Hola gusano. He visto eso. Tristemente. La peor parte es que la documentación es inexistente. http: // stackoverflow.com/questions/4920159/i-need-some-info-about-dbase-field-types – Ampere

1
+0

Ese código no se ha mantenido activamente desde que se lanzó en 2003. –

+1

@Thorsen: Lo sé, ¿pero supongo que servirá para Delphi 7? –

+1

Bueno, hubo una serie de errores en la última versión de FlashFiler y, hasta donde tengo conocimiento, no se ha hecho ningún trabajo en FF en absoluto ya que era de código abierto. También hay una serie de problemas de diseño fundamentales con él. Esa es una de las razones por las que desarrollé NexusDB desde cero como sucesor espiritual de FlashFiler. Probablemente no soy realmente objetivo al respecto;) pero IMO, teniendo en cuenta los requisitos del cuestionario, la versión gratuita integrada de NexusDB sería una opción mucho mejor que FlashFiler. –

7

Usted podría intentar SQLite. Es una excelente base de datos integrada. Rápido, confiable, y no se puede superar el precio (código abierto, dominio público). Hay una cantidad de envolturas Delphi, o puede usar la biblioteca directamente si quiere una solución liviana.

+1

+1 para SQLite. Fácil de usar, flexible y súper rápido en comparación con la mayoría (probablemente todas) otras bases de datos relacionales. –

3

Si tiene un presupuesto para gastar, pruebe AnyDAC. Proporciona acceso SQLite nativo e integrado, por lo que ni siquiera tiene que enviar una DLL externa.

+0

UniDac es mucho mejor http://www.devart.com/unidac/ pero esa es mi opinión personal ... – ComputerSaysNo

+0

¿De verdad? Me encantaría saber más sobre eso. Estoy usando AnyDAC y estoy contento con él, pero no sé mucho sobre UniDAC. –

+1

¿Eh? Tengo experiencia atrasada con UniDac. Compare los controladores AnyDAC y UniDac SQLite - AnyDAC es inmejorable. Enlace estático, cifrado, sus componentes de servicio, documentación. – oodesigner

4

Dos soluciones Open Source (trabajando desde Delphi 6 hasta XE):

  1. Un ORM oriented solution, que puede almacenar datos utilizando SQLite o un dispositivo de almacenamiento puro Delphi. Puede ser independiente, ya sea como Cliente/Servidor.

  2. One very fast pure Delphi NoSQL table storage engine. El benchmark de muestra fue capaz de almacenar 1,000,000 de registros con un entero y un campo de texto en 800 ms (con creación automática de índices). Usted crea sus propias columnas de tabla, luego accede al contenido de los campos a través de la vinculación tardía.

+0

+1 No he tenido tiempo de probar la tabla, pero estoy 100% seguro de que está bien escrita y es confiable, como todos los productos synopse, aplausos A. – ComputerSaysNo

0
  1. JvCSVDataSet y JvCSVBase de JVCL
  2. kbmMemTable
  3. Embedded Firebird server
  4. jbDBF
+0

kbmMemTable realmente apesta. No se puede probar porque el archivo de ayuda de este componente comercial no está disponible a menos que pague (por separado). Entonces, no hay manual = no hay posibilidad de probarlo. – Ampere

-2

Mientras se paga el manual, el componente real está disponible de forma gratuita, incluyendo una muy amplia aplicación de demostración que muestra muchas de las características. Además, hay mucha y mucha información en Internet sobre cómo usarla. Use www.codenewsfast.com o google.com para buscarlo.

mejores deseos Kim Madsen [email protected]