2012-07-18 30 views
11

Quiero conectar y usar la base de datos sql dentro de mi aplicación C++. Mi aplicación necesita almacenar algunos datos (se pueden almacenar en forma de tablas) que crecerán continuamente y deben compartirse entre diferentes procesos, por lo que necesito una base de datos. Seleccioné sql porque es recomendable para principiantes y necesito múltiples escritorios para que no SQLite.Qué opción seleccionar para usar sql en C++

En la búsqueda encontré las siguientes opciones (Estas opciones pueden incluir ORMS, API y controladores y es posible que algunas de estas opciones no se incluyan, es decir, me equivoqué al entender esa opción; por favor, corrígeme):

  1. SQLAPI++ - Source (también SITIO OFICIAL)
  2. MySQL Connector/C++ (. también se dan algunas de las ventajas que hay) - Source
  3. MySQL++
  4. CppDB
  5. SOCI
  6. Libodbc++ (Se ejecuta en la parte superior de ODBC)
  7. Database Template Library - Source
  8. Oracle Template Library
  9. Uso sql.h con ODBC:
    opciones para ODBC:
    a. MYSQL Connector/ODBC
    b. EasySoft ODBC
    c. Some Others

hilos de algunos tan que me ayudan a encontrar estas opciones: T1, T2, T3, T4.

Mis preguntas:

  1. ¿Qué opción de usar y cuando ? Ventajas/Desventajas de estas opciones? (puede estar basada en performance, learning curve, compatibility, present support.) ¿Hay alguna referencia o sugerencia para seleccionar entre estas opciones. (Realmente no sabemos acerca de estas opciones, por lo que puede haber algunas de estas opciones necesarias para agrupar juntos para hacer que funcionen es decir, puede haber algunas de las opciones son interdependientes.)
  2. ¿Cuáles son los requerida conjunto de herramientas para estas opciones.
  3. Si usa cualquier biblioteca dependiente ODBC, entonces qué ODBC usar. (Hay muchos ODBC mencionados en el enlace "Algunos otros" más arriba).
  4. Cualquier fuente para aprenderlos.(Para algunas de las opciones ya he mencionado una fuente.)
  5. ¿Hay algo más que me haya perdido, por completo?
  6. ¿Qué sucede si mi aplicación está en C? (Esto es porque también tienen que desarrollar una aplicación en C que utiliza sql)

Sé que he pedido demasiado. Por favor, da una sugerencia para cualquier parte en particular.

+2

http://stackoverflow.com/faq#dontask – Adam

+0

¡Demasiado! Por favor, mantenlo breve y conciso. –

+0

Sé que esto no sigue la regla So, brevemente. Pero necesito saber y el mejor lugar. Además, esto no está totalmente en contra de esa regla. Los usuarios de So que responden preguntas prácticas relacionadas con esta etiqueta también pueden ser útiles para esta pregunta. –

Respuesta

2

Las preguntas principales que debe considerar son qué tan multiplataforma necesita, tanto en la aplicación como en la base de datos.

Si necesita conectarse potencialmente a más de un servidor de base de datos relacional (por ejemplo, Oracle y MySQL o Firebird), es probable que sea mejor utilizar ODBC (por lo que vale que use UnixODBC). No he usado SQLAPI ++ o SOCI, así que no puedo decir mucho sobre cómo se comparan con UnixODBC.

Con UnixODBC, se obtiene una gran cantidad de opciones en la implementación. Muy a menudo, en realidad no instalo UnixODBC, y en su lugar conecto una aplicación directamente al controlador ODBC (esto es útil si una instancia en particular solo va a hablar con una sola base de datos, y minimiza las cosas que necesita instalar) También funciona con C++ y C.

Con UnixODBC -> MS SQL Server, usamos el controlador FreeTDS. Inicialmente estaba preocupado de entrar en producción con esto, pero de hecho descubrí que el protocolo de cable está completamente especificado, así que esto es más que un truco de ingeniería inversa (y también creo que los mismos tipos que hacen FreeTDS también hacen los controladores comerciales de EasySoft). MySQL proporciona controladores compatibles con UnixODBC.

No he probado UnixODBC -> Oracle, ya que ya había escrito una interfaz directa de OCI (cliente instantáneo) y siempre lo hemos usado.

UnixODBC es un poco más lento que usar un enfoque de protocolo de cable como OCI, pero la diferencia no es lo suficientemente significativa como para preocuparse. El motivo por el que utilizamos OCI es que Oracle lo proporciona de forma gratuita para las plataformas Linux/AIX/Solaris, mientras que no pude encontrar los controladores Oracle ODBC para estas plataformas.

Cuestiones relacionadas