Difference between revisions of "mssqlconn/es"

From Free Pascal wiki
Jump to navigationJump to search
 
m (Fixed syntax highlighting; removed categories included in template)
 
(14 intermediate revisions by 4 users not shown)
Line 1: Line 1:
==Overview==
+
{{mssqlconn}}
 +
[[category:Castellano]][[category:Español]]
 +
==Resumen==
 
mssqlconn es una unidad fcl-db que contiene código de conector para '''TMSSQLConnection''' (MS SQL Server) y '''TSybaseConnection''' (Sybase ASE)
 
mssqlconn es una unidad fcl-db que contiene código de conector para '''TMSSQLConnection''' (MS SQL Server) y '''TSybaseConnection''' (Sybase ASE)
 
Lazarus utiliza mssqlconn para presentar conectores a MS SQL y Sybase ASE.
 
Lazarus utiliza mssqlconn para presentar conectores a MS SQL y Sybase ASE.
 +
 +
[[Image:sqldbcomponents.png]]
 +
 +
==DBLib==
 +
 +
mssqlconn utiliza la unidad de bajo nivel dblib que requiere de la librería FreeTDS(.dll/.dylib/.so) para conectar al servidor.
 +
 +
==Instalación==
 +
 +
Lo único que se necesita es una librería FreeTDS dll/dylib/so acorde a la plataforma utilizada.
 +
* Bajo Linux, descarga el paquete freetds que provee '''libsybdb.so''' (e.g. en Debian lo provee el paquete '''libsybdb5''') (y el paquete de desarrollo) utilizando el gestor de paquetes. Puede ser necesario añadir un enlace simbólico libsybdb.so a libsybdb.so.5
 +
 +
* Bajo Windows, se puede descargar una versión reciente de la librería  FreeTDS tanto en su versión de 32 o 64 bits '''dblib.dll''' desde el siguiente enlace: [ftp://ftp.freepascal.org/fpc/contrib/windows/]
 +
 +
Uso avanzado: modificando el fichero de FPC '''dblib.pas''' SQLDB puede utilizar la librería "nativa" '''ntwdblib.dll''' en lugar de la librería  FreeTDS '''dblib.dll''' (en este caso FPC necesita ser compilado).
 +
 +
==Documentación==
 +
 +
Documentación oficial: [http://www.freepascal.org/docs-html/fcl/mssqlconn/index.html documentación de FPC sobre mssqlconn]
 +
 +
==Limitaciones y  consejos==
 +
* Puerto para Sybase: el puerto por defecto para Sybase ASE es el 5000. Como FreeTDS/mssqlconn utiliza el 1433 por defecto, puede ser necesario añadir :5000 a la propiedad del nombre de host (hostname) automáticamente  o bien manualmente de forma posterior por parte del usuario.
 +
 +
Tal como especifica la documentación:
 +
* puede ser necesario retocar algunos parámetros para soportar BLOB.
 +
* no están soportados los resultados múliples de MS SQL (multiple resultsets (MARS)).
 +
 +
Además, '''TMSSQLConnection''' y '''TSybaseConnection''' no soportan el manejo del retorno de estado y salida de parámetros de procedimientos almacenados.
 +
 +
Consejos adicionales:
 +
* Puede que necesites realizar YourConnection.ExecuteDirect('SET ANSI_NULL_DFLT_ON ON'); si necesitas permitir automáticamente los valores NULL en las columnas cuando creas tablas. Ver documentación MS: http://msdn.microsoft.com/en-us/library/ms174979.aspx
 +
* Puede que necesites de manera similar establecer SET ANSI_PADDING al valor ON para habilitar la compatibilidad mejorada con las funciones de comparación de texto de sqldb. Ver documentación MS: http://msdn.microsoft.com/en-us/library/ms187403.aspx
 +
 +
==Ejemplos==
 +
===Creando una base de datos===
 +
 +
El ejemplo de debajo crea una base de datos en un servidor MS SQL. Ten en cuenta para que funcione que el parámetro de conexión AutoCommit debe establecerse a on. Para conexiones normales subsequentes se puede establecer a off de nuevo y utilizar '''StartTransaction''' and '''Commit''' regularmente.
 +
 +
<syntaxhighlight lang=pascal>
 +
// Crear un formulario con un pulsador llamado DBButton,
 +
// un textbox llamado DatabaseNameEdit,
 +
// una conexión '''MSSQLConnection''' llamada FConn
 +
// ***asegúrate de que el parámetro Autocommit se encuentra establecido a on para la parte de creación de db antes de conectar:
 +
//FConn.Params.Add('AutoCommit=true');
 +
procedure TForm1.CreateDBButtonClick(Sender: TObject);
 +
var
 +
  CurrentDB: string;
 +
begin
 +
  if DatabaseNameEdit.Text='' then
 +
  begin
 +
    showmessage('Nombre de base de datos vacío. Por favor especifica un nombre primero.');
 +
    exit;
 +
  end;
 +
 +
  CurrentDB:=FConn.DatabaseName;
 +
  try
 +
    // For FPC 2.6.1+
 +
    FConn.ExecuteDirect('CREATE DATABASE '+DatabaseNameEdit.Text);
 +
    {
 +
    // This works with FPC 2.7.1, not on 2.6.1
 +
    FConn.CreateDB;
 +
    }
 +
  except
 +
    on E: Exception do
 +
    begin
 +
      showmessage('Excepción corriendo CreateDB: '+E.Message);
 +
    end;
 +
  end;
 +
end;
 +
</syntaxhighlight>

Latest revision as of 00:16, 21 February 2020

English (en) español (es) français (fr) polski (pl)

Resumen

mssqlconn es una unidad fcl-db que contiene código de conector para TMSSQLConnection (MS SQL Server) y TSybaseConnection (Sybase ASE) Lazarus utiliza mssqlconn para presentar conectores a MS SQL y Sybase ASE.

sqldbcomponents.png

DBLib

mssqlconn utiliza la unidad de bajo nivel dblib que requiere de la librería FreeTDS(.dll/.dylib/.so) para conectar al servidor.

Instalación

Lo único que se necesita es una librería FreeTDS dll/dylib/so acorde a la plataforma utilizada.

  • Bajo Linux, descarga el paquete freetds que provee libsybdb.so (e.g. en Debian lo provee el paquete libsybdb5) (y el paquete de desarrollo) utilizando el gestor de paquetes. Puede ser necesario añadir un enlace simbólico libsybdb.so a libsybdb.so.5
  • Bajo Windows, se puede descargar una versión reciente de la librería FreeTDS tanto en su versión de 32 o 64 bits dblib.dll desde el siguiente enlace: [1]

Uso avanzado: modificando el fichero de FPC dblib.pas SQLDB puede utilizar la librería "nativa" ntwdblib.dll en lugar de la librería FreeTDS dblib.dll (en este caso FPC necesita ser compilado).

Documentación

Documentación oficial: documentación de FPC sobre mssqlconn

Limitaciones y consejos

  • Puerto para Sybase: el puerto por defecto para Sybase ASE es el 5000. Como FreeTDS/mssqlconn utiliza el 1433 por defecto, puede ser necesario añadir :5000 a la propiedad del nombre de host (hostname) automáticamente o bien manualmente de forma posterior por parte del usuario.

Tal como especifica la documentación:

  • puede ser necesario retocar algunos parámetros para soportar BLOB.
  • no están soportados los resultados múliples de MS SQL (multiple resultsets (MARS)).

Además, TMSSQLConnection y TSybaseConnection no soportan el manejo del retorno de estado y salida de parámetros de procedimientos almacenados.

Consejos adicionales:

Ejemplos

Creando una base de datos

El ejemplo de debajo crea una base de datos en un servidor MS SQL. Ten en cuenta para que funcione que el parámetro de conexión AutoCommit debe establecerse a on. Para conexiones normales subsequentes se puede establecer a off de nuevo y utilizar StartTransaction and Commit regularmente.

// Crear un formulario con un pulsador llamado DBButton, 
// un textbox llamado DatabaseNameEdit,
// una conexión '''MSSQLConnection''' llamada FConn
// ***asegúrate de que el parámetro Autocommit se encuentra establecido a on para la parte de creación de db antes de conectar:
//FConn.Params.Add('AutoCommit=true');
procedure TForm1.CreateDBButtonClick(Sender: TObject);
var
  CurrentDB: string;
begin
  if DatabaseNameEdit.Text='' then
  begin
    showmessage('Nombre de base de datos vacío. Por favor especifica un nombre primero.');
    exit;
  end;

  CurrentDB:=FConn.DatabaseName;
  try
    // For FPC 2.6.1+
    FConn.ExecuteDirect('CREATE DATABASE '+DatabaseNameEdit.Text);
    {
    // This works with FPC 2.7.1, not on 2.6.1
    FConn.CreateDB;
    }
  except
    on E: Exception do
    begin
      showmessage('Excepción corriendo CreateDB: '+E.Message);
    end;
  end;
end;