DB Connect
DB Connect
Sección titulada «DB Connect»Tipo: db-connect · Paquete: Database Activities v1.0.3 · Salida: ZoanDbSession
Abre una conexión a una base de datos y devuelve una sesión (ZoanDbSession) que comparten las demás actividades de base de datos. Es el punto de partida de cualquier trabajo con SQL.
Cómo funciona
Sección titulada «Cómo funciona»Crea la conexión con el driver del motor indicado en provider y la abre con la connectionString. Tienes dos modos (ver el modelo de sesión):
- Con
body: las actividades dentro heredan la conexión automáticamente (no configurassession), y la conexión se cierra sola al terminar elbody, también si una actividad interna falla. En este modo la actividad no devuelve salida. - Sin
body: guarda la sesión en una variable de salida; pásala comosessiona las demás actividades y ciérrala con DB Close.
Lo que conviene saber:
- Motores y drivers:
sqlserverusa Microsoft.Data.SqlClient,postgresusa Npgsql,mysqlusa MySqlConnector (sirve también para MariaDB) yodbcusa el driver ODBC instalado en la máquina del robot. En expresiones también se aceptan los aliasmssql,sql server,postgresql,pgymariadb, sin distinguir mayúsculas. - Tiempos de espera: la actividad no fija tiempos propios; rigen los del driver. Si necesitas otros, ajústalos en la cadena de conexión con las palabras clave de ese driver.
- Transacciones: la conexión trabaja en modo autocommit: cada sentencia se confirma al ejecutarse. Para que varias sentencias se apliquen todas o ninguna, envíalas juntas en un solo DB Execute con la sintaxis de transacción del motor, o usa un procedimiento almacenado.
- Anidamiento: si dentro de un
bodyabres otro DB Connect conbody, las actividades internas usan la conexión más cercana; al salir se recupera la anterior.
Parámetros requeridos
Sección titulada «Parámetros requeridos»| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
provider | string | — | Motor de base de datos: sqlserver · postgres · mysql · odbc. |
connectionString | string | — | Cadena de conexión ADO.NET del driver elegido (servidor, base de datos, usuario, contraseña y opciones). Admite expresiones, por ejemplo credential("db-ventas")["value"] (cadena guardada como credencial de un solo valor) o armada con campos: "Server=db01;Database=ventas;User Id=" + credential("db")["user"] + ";Password=" + credential("db")["password"]. Pasar credential("x") sin ["…"] no sirve: la cadena llegaría como [credential]. |
Parámetros opcionales
Sección titulada «Parámetros opcionales»Ninguno.
Sub-flujos
Sección titulada «Sub-flujos»body opcional
Sección titulada «body opcional»Actividades a ejecutar con esta conexión. Heredan la sesión sin configurar session y la conexión se cierra al salir. Si se omite (o queda vacío), la actividad devuelve la sesión como salida y debes cerrarla con DB Close.
- Sin
body: unZoanDbSessioncon la conexión abierta. Pásalo comosessiona DB Query, DB Execute, DB Scalar y DB Close. - Con
body: esta actividad no devuelve ningún valor; la sesión solo existe dentro delbody.
Ejemplo
Sección titulada «Ejemplo»DB Connect provider = sqlserver connectionString = credential("db-ventas")["value"] └─ body: DB Query sql = "SELECT TOP 10 Id, Nombre FROM Clientes ORDER BY FechaAlta DESC" → output: clientes Log message = "Clientes leídos: " + rowCount(clientes)Con la sesión en una variable:
DB Connect provider = postgres connectionString = credential("db-reportes")["value"] → output: dbDB Scalar session = db sql = "SELECT COUNT(*) FROM facturas WHERE pagada = false" → output: pendientesDB Close session = dbErrores comunes
Sección titulada «Errores comunes»| Mensaje | Causa y solución |
|---|---|
Proveedor '…' no admitido. Usa: sqlserver, postgres, mysql, odbc. | El valor de provider no es un motor conocido. Elige uno de la lista o un alias válido. |
'provider' es obligatorio. / 'connectionString' es obligatorio. | Falta el parámetro o la expresión dio vacío (por ejemplo, una credencial inexistente). |
Blocked expression: contains a disallowed pattern (credential extraction in expressions is not allowed — use credential() in a param of type 'credential': '.ToPlainText(')… | La expresión usa .ToPlainText(), que está bloqueado en las expresiones. Lee el valor con credential("x")["value"] o el campo que corresponda (["password"]). |
| Error del driver: inicio de sesión fallido, servidor inaccesible, base de datos inexistente, palabra clave no admitida | El mensaje viene del motor o del driver. Revisa servidor, puerto, usuario, contraseña, firewall y la sintaxis de la cadena para ese driver. Si la red es inestable, envuelve la conexión en un Retry. |
Actividades relacionadas
Sección titulada «Actividades relacionadas»- DB Query / DB Execute / DB Scalar — operar con la sesión.
- DB Close — cerrar la conexión (modo sin
body). - Try / Catch — manejar los errores de conexión.