Ado con VC++

Anuncio
Base de Datos Oracle:
desarrollo de aplicaciones
ADO con VC++ 6.0
Alberto M.F.A. [email protected]
Modelo de objetos ADO
Interfaces principales
Colleciones
jul-04
Connection
Command
Recordset
Properties
Parameters
Fields
Errors
Alberto M.F.A. [email protected]
2
Modelo de objetos ADO
Otras Interfaces
Field
Error
Parameter
jul-04
Alberto M.F.A. [email protected]
3
Diagrama ADO
Connection
Errors
Error
Command
Properties
Parameters Properties
Recordset
Fields
Parameter
Properties
Field
jul-04
Alberto M.F.A. [email protected]
4
Pasos en la aplicación
Inicializar librerías COM
Crear conexión
Procesamiento con ADO
Cerrar conexión
Cerrar librerías COM
jul-04
Alberto M.F.A. [email protected]
5
Procesamiento con ADO
jul-04
Conexión a un origen de datos
(Connection). Opcionalmente, comenzar
una transacción.
Crear un objeto para representar un
comando SQL (Command)
Especificar valores en el comando SQL
como parámetros variables (Parameter)
Alberto M.F.A. [email protected]
6
Procesamiento con ADO
Ejecutar comando SQL (Command,
Connection o Recordset)
Almacenar las filas en una caché (Recordset)
Ordenar, filtrar y explorar datos (Recordset)
Modificar datos (Recordset)
Grabar datos de la caché en BDD (Recordset)
COMMIT o ROLLBACK Transacción
(Connection)
jul-04
Alberto M.F.A. [email protected]
7
Interfaz Connection
Abrir una conexión
Cerrar conexión
Ejecutar comando SQL sencillo (sin
parameters). Genera RecorSet.
Controlar transacciones
jul-04
BeginTrans, CommitTrans, RollBackTrans
Acceso al esquema de BBDD
Alberto M.F.A. [email protected]
8
Interfaz Command
jul-04
Factoria para crear objetos Parameter
Ejecuta comandos SQL complejos (con
parámetros)
Invocar a procedimientos almacenados
“Bind y Define” de datos antes y
después de execute
Alberto M.F.A. [email protected]
9
Interfaz Recordset
jul-04
Añadir, borrar y modificar registros
Recorrer el recorset en cualquier
dirección
Ordenar, filtrar y localizar Records
Sincronizar caché
Actualizaciones en lotes
Alberto M.F.A. [email protected]
10
Interfaz Field
Cargar y descargar LOB
Recuperar y establecer valores de
campo en un Recordset
Están contenidos en la Collection Fields
jul-04
Alberto M.F.A. [email protected]
11
Interfaz Parameter
Permite hacer Bind de datos para una
consulta SQL o llamada a procedimiento
Soporta Bind de LOB’s
Permite establecer:
jul-04
Tipo de dato
Sentido (IN, OUT, IN/OUT, ReturnValue)
Localizados en la Collection Parameters
de Command
Alberto M.F.A. [email protected]
12
Interfaz Error
Cualquier operación ADO puede generar un
error
La Collection Error de Connection los
almacena todos
Cada Error especifica:
jul-04
Descripción
Número de error
Objeto que lo provocó
Propiedades SQLState y NativeError
Alberto M.F.A. [email protected]
13
Inicializar y cerrar COM
if(FAILED(::CoInitialize(NULL)))
return -1;
try {...
Proceso ...
} catch (TipoExcepcion e){
Tratar error ...
}
::CoUninitialize();
jul-04
Alberto M.F.A. [email protected]
14
Abrir conexión
Alternativas:
jul-04
Connection.Open(“strConexion”, ...)
Recordset.Open(“strConexion”, ...)
Connection crea una conexión
disponible para la aplicación.
Recordset la crea internamente. Se
puede recuperar con ActiveConnection()
Alberto M.F.A. [email protected]
15
Ejecutar SQL sin Parámetros
Connection.Execute(SQL, ... )
Command.ActiveConnection = conn...
Command.CommandText = SQL
Command.Execute(... )
Command.Execute(SQL, ... )
jul-04
Alberto M.F.A. [email protected]
16
Ejecutar SQL con Parámetros
SQL con placeholders
“SELECT name FROM tabla WHERE id = ?”
Solo con Command.Execute(...)
Antes:
Command.CreateParameter() para cada
placeholder
Ajustes en el parameter
Command.Parameters.Append(parameter)
jul-04
Alberto M.F.A. [email protected]
17
Ejecutar stored proc/fun
Con Command.Execute(...)
Sintaxis Escape de ODBC
“{? = call stored_fun(? ?) }”
Para cada placeholder un parameter
jul-04
CreateParameter
Parameters.Append
Ojo con los tipos de dato: NO BOOLEAN
Alberto M.F.A. [email protected]
18
Métodos Execute
jul-04
Alberto M.F.A. [email protected]
19
Actualización de datos
A través de sentencias SQL (INSERT,
UPDATE, DELETE)
Para una sola tabla también a través de
un Recordset
Recordset.AddNew()
jul-04
Redorset.Fields.Item().Value = ...
Recordset.Update()
Recordset.CancelUpdate()
Alberto M.F.A. [email protected]
20
Transacciones
Controladas desde Connection
BeginTrans(...)
CommitTrans(...)
RollbackTrans(...)
Transacciones anidadas
BeginTrans(...)
jul-04
BeginTrans(...)
CommitTrans(...)
CommitTrans(...)
Alberto M.F.A. [email protected]
21
Descargar