Sign in Join
Wiki copytemporary

SQLdb Package/es: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11El paquete SQLdb contiene las Unidades (units) de FPC que permiten el acceso a un gran número de Bases de Datos SQL. En Lazarus encontraremos el paquete *sqldblaz.lpk* que una vez compilado e instalado nos permitirá el acceso a sus componentes en el LCL dentro de la pestaña "SQLdb".
22
3-<figure>
4-<img src="sqldbcomponents.png‎" title="sqldbcomponents.png‎" />
5-<figcaption>sqldbcomponents.png‎</figcaption>
6-</figure>
3+![](/wiki-images/c/c5/Sqldbcomponents.png%E2%80%8E)
74
85## Documentación
96
107Ver [Documentación sobre SQLDB](http://www.freepascal.org/docs-html/fcl/sqldb/index.html)
118
129## Componentes
1310
1411El paquete SQLdb proporciona los siguientes componentes:
1512
1613#### TSQLQuery
1714
18-<figure>
19-<img src="SQLdb_TSQLQuery.PNG‎" title="SQLdb_TSQLQuery.PNG‎" />
20-<figcaption>SQLdb_TSQLQuery.PNG‎</figcaption>
21-</figure>
15+![](/wiki-images/8/8e/SQLdb_TSQLQuery.PNG%E2%80%8E)
2216
2317Este es un descendiente de TDataset y proporciona los datos (procedentes de la consulta SQL realizada) en forma de Tabla. También puede ser empleado para ejecutar consultas SQL (e.g. procedimientos almacenados, INSER INTO...) que no retornan datos. Ver [[Working With TSQLQuery|Trabajando con TSQLQuery]] para más detalles.. Documentación: ver [TSQLQuery](http://www.freepascal.org/docs-html/fcl/sqldb/tsqlquery.html)
2418
2519En el inspector de objetos podemos ver:
2620
2721Active: (valor por defecto: False).
2822
2923AutoCalcFields: (valor por defecto: True).
3024
3125Database:
3226
3327DataSource:
3428
3529DeleteSQL: (TStringList).
3630
3731FieldDefs: (valor por defecto: 0 items).
3832
3933FileName:
4034
4135Filter:
4236
4337Filtered:
4438
4539IndexDefs: (valor por defecto: 0 items).
4640
4741IndexFieldNames:
4842
4943InsertSQL: Es un listado de cadenas que especifican la query para realizar el INSERT (TstringList). Caso de no definirse uno nos puede lanzar una excepción similar a esta:
5044
51-<figure>
52-<img src="InsertSQLQueryNotExpecified.PNG" title=" center" />
53-<figcaption> center</figcaption>
54-</figure>
45+![](/wiki-images/e/ed/InsertSQLQueryNotExpecified.PNG)
5546
5647MaxIndexesCount: (valor por defecto: 2).
5748
5849Name: (valor por defecto SQLQuery1).
5950
6051Options: **sqo** = **s**tandar **q**uery **o**ption
6152
6253- sqoAutoApplyUpdates: (valor por defecto: True).
6354
6455- sqoAutoCommit: (valor por defecto: True).
6556
6657- sqoCancelUpdatesOnRefresh: (valor por defecto: True).
6758
6859- sqoKeepOpenOnCommit: (valor por defecto: True).
6960
7061- sqoRefreshUsingSelect: (valor por defecto: True).
7162
7263PacketRecords: (valor por defecto: 10).
7364
7465ParamCheck: (valor por defecto: True).
7566
7667Params: (valor por defecto: 0 items).
7768
7869ParseSQL: (valor por defecto: True).
7970
8071ReadOnly: (valor por defecto: True).
8172
8273RefreshSQL: (TStringList).
8374
8475Secuence:
8576
8677ApplyEvent:
8778
8879- saeOnNewRecord
8980
9081- saeOnPost
9182
9283FieldName.
9384
9485IncrementBy: (valor por defecto: 1).
9586
9687SecuenceName:
9788
9889ServerFilter:
9990
10091ServerFiltered: (valor por defecto: True).
10192
10293ServerIndexDefs: (valor por defecto: 0 items).
10394
10495SQL: (TStringList).
10596
10697Tag: (valor por defecto: 0).
10798
10899Transaction:
109100
110101UniDerectional:
111102
112103UpdateMode:
113104
114105UpdateSQL:
115106
116107UsePrimaryKeyAsKey: (valor por defecto: True).
117108
118109#### TXXXConnection
119110
120111Donde XXX es el tipo de Base de Datos a la cual nos vamos a conectar. Cada uno de estos componentes emplea una petición "standar" de los componentes *SQLQuery* y *SQLTransaction*, y los traduce a peticiones especificas de cada Base de Datos, permitiendo la abstracción sobre las características especificas de las mismas.
121112
122113Estos objetos de conexión descienden del genérico TSQLConnection; se puede utilizar TSQLConnection para crear programas que utilicen bases de datos de forma que puedan conectar a múltiples bases de datos. (ver [[SQLdb Tutorial3]]).
123114
124115Los componentes TXXXConnection que podremos emplear son:
125116
126117- TIBConnection .............. *Permite conexiones a BBDD Borland Interbase/Firebird*
127118- TMSSQLConnection ...... ([[mssqlconn|Microsoft SQL Server]], disponible desde la versión 2.6.1 de FPC & Lazarus 1.0.8) - mssqlconn.
128119- TMySQL40Connection ... *Conexiones a BBDD MySQL 4.0* requiere la librería cliente MySQL 4.0) - mysql40conn
129120- TMySQL41Connection ... *Conexiones a BBDD MySQL 4.1* requiere la librería cliente MySQL 4.1) - mysql41conn
130121- TMySQL50Connection ... *Conexiones a BBDD MySQL 5.0*requiere la librería cliente MySQL 5.0) - mysql50conn
131122- TMySQL51Connection ... *Conexiones a BBDD MySQL 5.1*requiere la librería cliente MySQL 5.1, disponible desde la versión 2.5.1 de FPC)
132123- TMySQL55Connection ... *Conexiones a BBDD MySQL 5.5*requiere la librería cliente MySQL 5.5 client library, available since FPC version 2.6.1/Lazarus 1.0.8)
133124- TMySQL56Connection ... *Conexiones a BBDD MySQL 5.6* requiere la librería cliente MySQL 5.6) - mysql56conn
134125- TMySQL57Connection ... *Conexiones a BBDD MySQL 5.7* requiere la librería cliente MySQL 5.7) - mysql57conn
135126- TODBCConnection ......... *Para conexiones a BBDD mediante los drivers see [[ODBCConn|ODBC]] instalados en el PC*
136127- TOracleConnection ........ ''Para emplear con el motor ([[Lazarus Database Overview|Oracle]])
137128- TPQConnection ............ *Para emplear con BBDD ([[postgresql|PostgreSQL]])*
138129- TSybaseConnection ...... ''Para emplear con el motor ([[mssqlconn|Sybase ASE]], disponible desde la versión 2.6.1 de FPC & Lazarus 1.0.8)
139130- TSQLite3Connection ..... *Para emplear con el motor ([[SQLite]] - a partir de la versión 2.2.2 de FPC*.
140131
141132#### TSQLTransaction
142133
143134Documentación: ver [documentación sobre TSQLTransaction](http://www.freepascal.org/docs-html/fcl/sqldb/tsqltransaction.html)
144135
145136Encapsula las transacciones con el servidor de Bases de Datos. Un objeto TXXXConnection siempre necesita al menos otro del tipo TSQLTransaction asociado a el, de manera que las transacciones de las consultas sean gestionadas.
146137
147138Las consultas/acciones en la base de datos necesitan encapsularse en:
148139
149140- Un bloque .StartTransaction/.Commit (o .Rollback).
150141- O un simple .StartTransaction al comienzo, seguido por .CommitRetaining o .RollBackretaiing. CommitRetaining y RollbackRetaining mantienen la transacción abierta, por tanto no se necesita otra StartTransaction.
151142
152143Estableciendo .Active a true si previamente estaba como false equivale a .StartTransaction
153144
154145Estableciendo .Active a false si previamente estaba como true equivale a .Rollback
155146
156147## Usando el paquete SQLdb
157148
158149Para utilizar el paquete SQLdb son necesarios los componentes *TSQLQuery* y *TSQLTransaction*, además del componente *TXXXConnection* especifico para la conexión.
159150
160151Aquí tenéis un breve tutorial:
161152
162153- Asegurarse de tener el driver cliente apropiado para la base de datos a la que queremos conectar y que el servidor en el otro extremo esté activo y acepte conexiones (estando la base de datos creada con su(s) correspondientes tabla(s).
163154- Ir a la solapa SQLdb en la paleta de componentes.
164155- Añadir un componente TXXXConnection (conveniente para el tipo de base de datos que se esté utilizando) al formulario, y rellenar las propiedades necesarias para conectar a la base de datos. Estas variarán dependiendo de la base de datos actual. Hay que asegurarse de que la propiedad "connected" se puede establecer al valor true, caso contrario deberemos revisar los pasos previos también.
165156- Añadir un componente TSQLTransaction. Volver al componente Connection y establecer su propiedad "Transaction" a la nueva transacción. Esto debería establecer la propiedad transaction de la base de datos - chequearlo para asegurarse. Deberías ser capaz de establecer su valor a "true".
166157- Añadir un componente SQLQuery y establecer sus propiedades "Database" al componente de conexión que hemos añadido.
167158- Establecer la propiedad "SQL" de SQLQuery. Para un primer test realizar por ejemplo un "SELECT * FROM \<nombre_tabla\>" que selecciona todo el contenido de la tabla para la base de datos con la que se estableció la conexión.
168159- Establecer Active a True. Si funciona, se ha abierto una consulta (query) y el dato está disponible.
169160
170161Desde este punto, añadir controles es igual que para cualquier otra base de datos, de todos modos recapitulemos:
171162
172163- Añadir un componente TDatasource (desde la solapa "Data Access") y establecer su propiedad "dataset" al componente "SQLQuery".
173164- Añadir algunos controles desde la solapa "Data Access". Para una comprobación rápida se puede añadir un componente TDBGrid y establecer su "datasource" a la fuente de datos que se ha añadido. Con esto se deberían visualizar datos en el grid de acuerdo al resultado obtenido de la consulta que se haya realizado (por ejemplo: "SELECT * FROM \<nombre_tabla\>").
174165
175166Por supuesto, esto es solamente el comienzo, pero obteniendo algunas datos en la grid suele ser usualmente el primer paso para asegurar que la conexión está funcionando. Se pueden encontrar explicaciones más detalladas en [[Working With TSQLQuery]].
176167
177168Aparte de la GRID podemos añadir componentes de la solapa Data Controls. Una vez que la GRID presenta datos, con estos componentes podemos mostrar valores individuales por ejemplo de uno o varios campos de un registro en modo texto (para ello seleccionamos en el inspector de objetos su fuente de datos y el campo que nos interese, o bien imágenes con un TDBImage (en este caso son valores binarios de tipo blob/bytea que debemos crear previamente a su uso en la tabla que utilicemos). Nos podemos mover de uno a otro registro con un TDBNavigator de forma sencilla que nos permite movernos por el dataset con next,prior...
178169
179170## Notas
180171
181172Se pueden encontrar más detalles en [[SQLdb Programming Reference]]
182173
183174Las páginas relacionadas con el paquete SQLdb fueron inicialmente escritas a partir de observaciones realizadas utilizando TPQConnection, PostgreSQL 8.1 bajo WinXP. Es de esperar resultados similares para otras bases de datos, de modo que si alguien los puede confirmar vendría bien tener aquí unas anotaciones del resultado.
184175
185176Parece funcionar de modo similar en MySQL 5.0.45 bajo Win XP. La propiedad 'active' de TSQLTransaction no puede ser establecida a true, pero los datos obtenidos de la base de datos se pueden visualizar en el componente TDbGrid (se encuentra en la solapa DataControls).
186177
187178Se puede encontrar algo más de información (notas y documentación) en el siguientes enlace:
188179
189180<http://z505.com/cgi-bin/powtils/docs/1.6/idx.cgi?file=fcldbnotes>
190181
191182Para ver el listados de clases disponibles para esta interfaz ir a:
192183
193184<http://z505.com/cgi-bin/powtils/docs/1.6/idx.cgi?file=index-4&unit=sqldb>
194185
195186--Jagluiperd 00:54, 11 September 2010 (CEST)
196187
197188---
198189*From the Free Pascal wiki, page "SQLdb Package/es", as it stood on 2017-06-19 after a change by Jma sp, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
199190Category: Castellano
200191Category: Español

Back to history