insertar - firebirdsql.data.firebirdclient c#
¿Cómo creo un archivo de base de datos Firebird programáticamente? (1)
Se está perdiendo un punto crucial, el proveedor Firebird ADO.net no es como System.Data.SQLite
: no es un motor de base de datos Firebird, solo es un cliente para conectarse a un servidor Firebird, de forma predeterminada a través de una implementación de C # pura el protocolo de conexión TCP / IP de Firebird, que utiliza alternativamente el cliente nativo o un ''servidor'' incorporado (una API cliente nativa que habla directamente con un motor de base de datos en proceso).
La primera opción no tiene dependencias, pero la segunda y la tercera opción tienen dependencias nativas que debe proporcionar usted mismo (no es parte de FirebirdSql.Data.FirebirdClient).
Para el nativo necesitas fbclient.dll
, para Firebird Embedded necesitas Firebird Embedded: para Firebird 2.5 y anteriores: fbembed.dll
y dependencias, para Firebird 3 fbclient.dll
+ plugins/engine12.dll
y dependencias.
Su código no tiene nada de malo, pero para que funcione, debe hacer lo siguiente para obtener Firebird Embedded:
Descargue el último kit zip de Firebird 3 (utilice 32 bits para una aplicación de 32 bits o AnyCPU, 64 bits para una aplicación de 64 bits).
En el momento de escribir la última versión es Firebird 3.0.1. Puede obtenerlo desde la página de descarga de Firebird 3 , busque "Kit Zip para instalaciones manuales / personalizadas" en Win32 o Win64.
- Descomprímelo en una carpeta (por ejemplo
D:/Temp/fb3embedded
) - Puede guardar todos los archivos, pero puede eliminar la mayoría de ellos ya que no son necesarios para Firebird Embedded (el zipkit también es un servidor completo de Firebird). Debe conservar lo siguiente:
- carpeta
intl
y todo el contenido (necesario para el conjunto de caracteres y el soporte de intercalación) -
plugins/engine12.dll
(el motor de la base de datos, otros archivos enplugins
pueden ser eliminados, pero esto puede restringir algunas funciones) -
fbclient.dll
(punto de entrada principal para el motor incorporado) -
firebird.msg
(contiene mensajes de error) -
icu*
(necesario para el conjunto de caracteres y soporte de intercalación) - Es posible que necesite conservar
msvcp100.dll
ymsvcr100.dll
si aún no está instalado (pero normalmente está en los sistemas Windows más recientes)
- carpeta
Técnicamente también puedes eliminar intl
, pero eso limitará el soporte del juego de caracteres.
En su código, en lugar de ClientLibrary = "fbclient.dll"
especifique ClientLibrary = @"D:/Temp/fb3embedded/fbclient.dll"
, y funcionará. Para una aplicación implementada, también puede colocar Firebird Embedded dentro de la carpeta de la aplicación y usar una ruta relativa.
Para Firebird 2.5 y versiones anteriores, las instrucciones son similares, pero en su lugar, descarga el kit Zip incrustado de esa versión, descomprímalo en una carpeta y señale ClientLibrary
en fbembed.dll
(y no en fbclient.dll
) en esa carpeta.
Solo tenga en cuenta que FbConnection.CreateDatabase
arrojará una excepción si la base de datos ya existe y ha especificado la overwrite
como false
.
¿Cómo creo un archivo de base de datos Firebird programáticamente?
He escrito código usando SQLite (C # .NET, System.Data.SQLite) ... decidí probar Firebird.
Para instalar Firebird: Windows 7 -> Visual Studio 2013 -> Archivo -> Nuevo -> Proyecto, etc. ---------- luego Herramientas -> Administrador de paquetes de biblioteca -> Administrar paquetes NuGet -> buscar "firebird "-> Proveedor de datos Firebird ADO.NET -> Instalar (botón).
Resultó en a) Referencias -> FirebirdSql.Data.FirebirdClient, yb) FirebirdSql.Data.FirebirdClient.5.8.0 subdir ... con Firebird .dll''s.
Para crear un archivo de base de datos Firebird, lo he intentado (extraído de otra publicación de StackOverflow):
int pageSize = 4096;
bool forcedWrites = true;
bool overwrite = false;
var connectionString = new FbConnectionStringBuilder
{
Database = stPathFilename,
ServerType = FbServerType.Embedded,
UserID = "SYSDBA",
Password = "masterkey",
ClientLibrary = "fbclient.dll"
}.ToString();
FbConnection.CreateDatabase(connectionString, pageSize, forcedWrites, overwrite);
Supuse que esto es estándar, a excepción del stPathFilename. Sin embargo, este código tiene una excepción ... se queja de fbclient.dll.
Entonces probé
ClientLibrary = "FirebirdSql.Data.FirebirdClient.dll"
... que se encuentra en mi subdivisión Debug.
Esto arroja una excepción ... "No se puede encontrar un punto de entrada llamado ''isc_create_database'' en DLL ''FirebirdSql.Data.FirebirdClient.dll".
¿Cómo creo un archivo de base de datos Firebird programáticamente?