UNIDAD 5: INTRODUCION A LAS BASES DE DATOS
TEMA 6: ADO NET ACTIVE DATA OBJECT
EL NUEVO MODELO DE DATOS DE MICROSOFT ES ADO.NET, ESTE MODELO DESCANSA ENUNA SERIE DE OBJETOS ESPECIALIZADOS QUE FACILITAN EL PROCESAMIENTO DE UNABASE DE DATOS.
fuente microsoft.net
Como ven esta bastante claro y no ocupa explicación,
Empezando:
El problema es comunicar un programa o aplicación aspx con una base dedatos y mas que comunicar se pretende que el programa o aplicaciónrealize una serie de procesos u operaciones con la base de datos o mejoraun con el conjunto de tablas que contiene una base de datos.
La primera nota a recordar es que una base de datos puede estarfisicamente en el servidor y en algun folder o directorio del disco durode dicha maquina servidora, por ejemplo, c:progfacilmisitiomibase.mbd,como se observa la base que se construyo en access (mibase.mbd) sealmaceno en el disco c en el folder progfacil y dentro del subfoldermisitio.
Sin embargo tambien es necesario conocer que asi como existen servidoresde paginas(web server), servidores de correo (mail server), servidores deftp (ftp server), etc, tambien existen servidores de bases de datos(database server), los mas comunes son el sqlserver de microsoft, oracle,mysql, etc, estos servidores tambien pueden crear, administrar y procesaruna base de datos, por supuesto que el procedimiento que se dio paracrearla en access en el tema anterior no se puede usar para crear ycargar una base de datos en un servidor de bases de datos.(esperar librosde bases de datos en programacionfacil en un proximo futuro).
El modo de comunicarse entre nuestro programa o aplicación y la base dedatos (ya sea fisica o un dbserver), implica que ambos manejen unlenguaje de programación comun, es decir no se puede mandar unainstrucción en csharp, o en basic o pascal a la base de datos y ademasesperar que esta ultima la entienda ( para entender esto, una razon muysencilla es que la base de datos tendria que conocer o comprender todoslos lenguajes de programación), para resolver este problema decomunicación es que se usa un lenguaje comun de bases de datos que tantolos lenguajes de programación existentes como las bases de datosentienden, este lenguaje comun de bases de datos es el SQL (structuredquery languaje) o lenguaje estructurado de consultas.
En otras palabras, ustedes mis estimados lectores tendran que aprendereste nuevo lenguaje de programación el SQL, la buena noticia es que es unlenguaje con muy pocas instrucciones y ademas existen muy buenostutoriales en internet incluyendo uno aqui en programacionfacil.com quehay que buscar y estudiar.
PROPAGANDA, ya ven que en este curso estan aprendiendo el lenguaje deprogramación CSHARP y ahora el lenguaje de programación SQL, !wow! doslenguajes por el precio de uno.
Bueno las principales instrucciones de SQL, que se usan en este curso sonSELECT, INSERT, UPDATE y DELETE.
La pregunta es ahora como mandamos las instrucciones sql a la base dedatos, la respuesta son los OBJETOS ADO.NET que estamos analizando enorden y proposito de uso, los estaremos explicando.
OBJETO CONNECTION:- OBJETO QUE SE UTILIZA PARA ESTABLECER UNA CONECCION OENLACE A LA BASE DE DATOS.
Este objeto primero se tendra que crear en el programa y luego se tendraque cargar con dos parametros(ver ejemplo mas abajo), el primer parametroes el provedor o la fuente que proporcionara los datos, los provedores ofuentes de datos que existen son:
SQLSERVER NET DATA PROVIDER.- QUE SE ESPECIALIZA EN COMUNICARSE YPROCESAR BASES DE DATOS CONSTRUIDAS CON MICROSOF SQL SERVER V7.0
OLEDB.NET DATA PROVIDER.- QUE SE ESPECIALIZA EN COMUNICARSE Y PROCESARBASES DE DATOS QUE A LA FECHA DEL PRESENTE LIBRO UTILIZEN ALGUNOS DE LOSSIGUIENTES DRIVERS, SQLOLEDB ( VERSIONES ANTERIORES DE SQL SERVER DEMICROSOFT), MSDAORA (ORACLE), MICROSOFT.JET ( ACCESS Y ALGUNOS OTROS DBMSDE MICROSOFT)
NOTA: Este es el que se usa en los ejemplos siguientes, obserrvar queaunque C#BUILDER trae por default los controles SQL, en este capitulo seusaran los objetos OLEDB, lo malo es que se tendran que crear, cargar ycodificar a mano y no olvidar incluir en la parte de arriba del programala instruccion using System.Data.OleDb;
ODBC.NET .- BASES DE DATOS QUE USAN ODBC COMO MEDIO DE COMUNICACION CONOTRAS BASES DE DATOS Y APLICACIONES COMO NOTA A CONSIDERAR ODBC.NET NOESTA INCLUIDA POR DEFAULT EN MICROSOFT.NET, SE TIENE QUE BAJAR DEMICROSOFT.
El segundo parametro es la propia base de datos con la cual se comunicarael programa o aplicación.
Ejemplo del objeto CONNECTION
Static OleDbConnection coneccion;coneccion = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:\progfacil\tusitio\mibase.mdb");
Es una sola string y los dos parametros mencionados van separados por elpunto y coma.
ATENCION es DATA SOURCE= no usar DATASOURCE= estan adevertidos.
ejemplos de los otros poveedores o fuentes mencionados:
//Provider=MSDAORA; Data Source=ORACLE8i7; User ID=OLEDB; Password=OLEDB//Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:inLocalAccess40.mdb;//Provider=SQLOLEDB;Data Source=MySQLServer;Integrated Security=SSPI;
OBJETO COMMAND.-
Ya establecido el canal o enlace entre el programa y la base de datos viael objeto CONECCION, se debe mandar la instruccion SQL a la propia basede datos, sin embargo en un programa de csharp por supuesto que no puedecontener instrucciones de otros lenguajes de programación como el de SQL,es por esto que se deberan usar algunos de los otros objetos de ADO.NETpara que estos objetos transporten la instruccion sql hacia la base dedatos (y transporte de regreso al servidor los datos de alguna tabla),uno de estos objetos es el objeto COMMAND.
Este objeto puede contener directamente una instrucción SQL y enviarla alobjeto conección ya descrito.
Este objeto command primero se tendra que crear y luego cargarle dosparametros que son:
la instruccion sql y el objeto conneccion que ya se vio en el parrafoanterior. ejemplo
OleDbCommand orden;
orden= new OleDbCommand("select * from mitabla", coneccion);
Si esta muy grande o muy compleja la instruccion sql, es mas convenientecrearla en una variable string y poner la variable como parametro ejemplo:
OleDbCommand orden;
String q="select * from mitabla";
orden= new OleDbCommand(q, coneccion);
Sin embargo ciertas instrucciones de sql ( ya estudiaron su tutorial delsql??) requieren que se manden los datos a la base de datos, respetandoel tipo de dato con los cuales los creo el software de bases de datos,por ejemplo si edad en access se declaro como NUMBER, la instruccion sqlque prentenda cargar dicho campo, tiene la obligación de mandarla coneste tipo de dato asociado, instrucciones SQL que permiten cargar ocapturar ese campo edad son INSERT o UPADTE ( ya estudiarón su tutorialde SQL??).
Para resolver este problema, usaremos en la string q, unas variablesespeciales llamadas VARIABLES PARAMETROS que se simbolizan usando elsimbolo @ antes de la variable y ademas al objeto COMMAND le agregamosdos instrucciones extras que permiten agregar a la string q el dato y eltipo de dato, ejemplo, se tienen seis renglones ya capturados en nuestratabla y se quiere agregar un septimo renglon con los siguientes datos,clave=7, nombre="rana" peso=3.14 usaremos una instrucción SQL INSERT ej:
OleDbCommand orden;String clave=7;string nombre="rana"; string peso=3.14;string q="insert into mitabla(clave,nombre,peso) values(@CLAVE, @NOMBRE,@PESO)";orden= new OleDbCommand(q, coneccion);orden.Parameters.Add(new OleDbParameter("@CLAVE", OleDbType.Integer));orden.Parameters["@CLAVE"].Value = clave;orden.Parameters.Add(new OleDbParameter("@NOMBRE", OleDbType.VarWChar,40));orden.Parameters["@NOMBRE"].Value = nombre;orden.Parameters.Add(new OleDbParameter("@PESO", OleDbType.Double));orden.Parameters["@PESO"].Value = edad;
Observar que para cada variable parametro se tienen que cargar doselementos el valor y el tipo de dato correpondiente.
Aunque en valor se manda string's en oledbtype se hace un mapeo, relacióno conversión al tipo de dato que se uso en access, tener mucho cuidadoque exista una relación igual o cuando este pograma se ejecute elcompilador les va a mandar un error o excepción de sql que les intentadecir que el tipo de dato que mandaron a la base de datos, no es igual alque se uso para crearlo en la base de datos. Blog sobre ropa y moda Shein, Primark y Amazon
Los OLEDBTYPE mas comunes son:
BigInt A 64-bit signed integer (DBTYPE_I8). This maps to Int64.
Binary A stream of binary data (DBTYPE_BYTES). This maps to an Array oftype Byte.
Boolean A Boolean value (DBTYPE_BOOL). This maps to Boolean.
BSTR A null-terminated character string of Unicode characters(DBTYPE_BSTR). This maps to String.
Char A character string (DBTYPE_STR). This maps to String.
Currency A currency value ranging from -263 (or-922,337,203,685,477.5808) to 2 63 -1 (or +922,337,203,685,477.5807) withan accuracy to a ten-thousandth of a currency unit (DBTYPE_CY). This mapsto Decimal.
Date Date data, stored as a double (DBTYPE_DATE). The whole portion isthe number of days since December 30, 1899, while the fractional portionis a fraction of a day. This maps to DateTime.
DBDate Date data in the format yyyymmdd (DBTYPE_DBDATE). This maps toDateTime.
DBTime Time data in the format hhmmss (DBTYPE_DBTIME). This maps toTimeSpan.
DBTimeStamp Data and time data in the format yyyymmddhhmmss(DBTYPE_DBTIMESTAMP). This maps to DateTime.
Decimal A fixed precision and scale numeric value between -1038 -1 and 1038 -1 (DBTYPE_DECIMAL). This maps to Decimal.
Double A floating point number within the range of -1.79E +308 through1.79E +308 (DBTYPE_R8). This maps to Double.
Empty No value (DBTYPE_EMPTY). This maps to Empty.
Error A 32-bit error code (DBTYPE_ERROR). This maps to Exception.
Filetime A 64-bit unsigned integer representing the number of100-nanosecond intervals since January 1, 1601 (DBTYPE_FILETIME). Thismaps to DateTime.
Guid A globally unique identifier (or GUID) (DBTYPE_GUID). This maps toGuid.
IDispatch A pointer to an IDispatch interface (DBTYPE_IDISPATCH). Thismaps to Object. Note This data type is not currently supported byADO.NET. Usage may cause unpredictable results.
Integer A 32-bit signed integer (DBTYPE_I4). This maps to Int32.
IUnknown A pointer to an IUnknown interface (DBTYPE_UNKNOWN). This mapsto Object. Note This data type is not currently supported by ADO.NET.Usage may cause unpredictable results.
LongVarBinary A long binary value (OleDbParameter only). This maps to anArray of type Byte.
LongVarChar A long string value (OleDbParameter only). This maps toString.
LongVarWChar A long null-terminated Unicode string value (OleDbParameteronly). This maps to String. Numeric An exact numeric value with a fixedprecision and scale (DBTYPE_NUMERIC). This maps to Decimal. PropVariantAn automation PROPVARIANT (DBTYPE_PROP_VARIANT). This maps to Object.
Single A floating point number within the range of -3.40E +38 through3.40E +38 (DBTYPE_R4). This maps to Single.
SmallInt A 16-bit signed integer (DBTYPE_I2). This maps to Int16.
TinyInt A 8-bit signed integer (DBTYPE_I1). This maps to SByte.
UnsignedBigInt A 64-bit unsigned integer (DBTYPE_UI8). This maps toUInt64.
UnsignedInt A 32-bit unsigned integer (DBTYPE_UI4). This maps to UInt32.
UnsignedSmallInt A 16-bit unsigned integer (DBTYPE_UI2). This maps toUInt16.
UnsignedTinyInt A 8-bit unsigned integer (DBTYPE_UI1). This maps to Byte.
VarBinary A variable-length stream of binary data (OleDbParameter only).This maps to an Array of type Byte. VarChar A variable-length stream ofnon-Unicode characters (OleDbParameter only). This maps to String.
Variant A special data type that can contain numeric, string, binary, ordate data, as well as the special values Empty and Null (DBTYPE_VARIANT).This type is assumed if no other is specified. This maps to Object.
VarNumeric A variable-length numeric value (OleDbParameter only). Thismaps to Decimal.
VarWChar A variable-length, null-terminated stream of Unicode characters(OleDbParameter only). This maps to String.
WChar A null-terminated stream of Unicode characters (DBTYPE_WSTR). Thismaps to String.
Fuente:microsoft.net
Aun mas, con el ejemplo anterior el objeto COMMAND esta construido ypreparado y cargado pero todavia no se manda desde el programa a la basede datos, es decir le faltan activar las siguientes tres propiedades,ejemplo;
OleDbCommand orden;String clave=7;string nombre="rana";string peso=3.14;string q="insert into mitabla(clave,nombre,peso) values(@CLAVE, @NOMBRE,@PESO)";orden= new OleDbCommand(q, coneccion);orden.Parameters.Add(new OleDbParameter("@CLAVE", OleDbType.Integer));orden.Parameters["@CLAVE"].Value = clave;orden.Parameters.Add(new OleDbParameter("@NOMBRE", OleDbType.VarWChar,40));orden.Parameters["@NOMBRE"].Value = nombre;orden.Parameters.Add(new OleDbParameter("@PESO", OleDbType.Double));orden.Parameters["@PESO"].Value = edad;orden.Connection.Open();orden.ExecuteNonQuery();orden.Connection.Close()
sencillo abrir la coneccion, mandar o ejecutar la instrucción y cerrar laconeccion.
OBJETOS DATAADAPTER Y DATASET:(dos por uno)
Son los otros dos objetos de ADO.NET que tambien permiten transportar unainstruccion sql desde el programa hasta la base de datos y transportar deregreso hacia el programa los datos contenidos en alguna de las tablas .
Con los objetos CONNECTION, COMMAND y DATAADAPTER ya se pueden efectuarcualquiera de la operaciones SQL descritas( ya estudiarón su tutorial deSQL), el problema es que pasa con el usuario cuando va a ver base dedatos o mejor aun las tablas que estan en la base de datos en disco.
DATASET:- Es una copia en memoria (d la maquina cliente) de la base dedatos( y todas sus tablas) que se encuentra en disco.
DATAADAPTER.- En principio es muy similar al objeto COMMAND es decir seusa para transportar instrucciones SQL a la base en disco, de hechos susformatos e instrucciones son muy similares a los vistos para el objetoCOMMAND, su diferencia principal es que dataadapter esta masespecializado y contiene una serie de metodos que facilitan laintereaccion entre el DATASET y la Base de Datos en disco
En particular muchos de los programas que se veran en temas posterioressolo usan los objetos CONNECTION, DATAADAPTER y DATASET.
Otra vez, dataadpater se especializa en transportar instrucciones sql ala base de datos en disco pero ademas se utiliza para cargar la tabla enmemoria o dataset del cliente.
Ejemplo:
// abriendo la coneccioncanal = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:\progfacil\tusitio\mibase.mdb");// cargando el adapter con la instruccion sqlorden =new OleDbDataAdapter("select * from mitabla", coneccion);// cargando el datasetTABLA= new DataSet();orden.Fill(TABLA, "mitabla");
Como se observa en este ejemplo muy sencillo, el dataadapter(orden) estafuncionando de manera muy similar al primer ejemplo que se vio del objetoCOMMAND pero tengan la seguridad que tambien se pueden usar variablesparametros y agregarles los dos tipos de parametros a este objetodataadpater.
Observar que su propiedad FILL carga el DATASET(TABLA) con una de lastablas en disco, recordar que en la base de datos puede contener muchastablas.
Ademas esa propiedad FILL es equivalente a las tres ultimas instruccionesdel objeto COMMAND, es decir open, executenonquery y close, mas facilverdad.
DATAREADER y DATASET:
Observar que tambien se usan en forma conjunta, primero es muy similar enuso y función que el objeto DATAADAPATER y COMMAND, la diferencia entredatareader y dataadapter es el tipo de base de datos con las cuales sepueden comunicar, dataadpater se especializan en bases de datosrelacionales y datareader se especializa en archivos, que no se estudianen este curso.
Tambien es importante mencionar que datareader es el objeto de ADO.NETmas parecido al objeto RESULTSET que uso mucho en el ADO anterior demicrosoft.
EN general se han visto de manera sencilla los principales objetosADO.ASP( connection, command, datareader, dataadapter, dataset), sinembargo la tabla o las tablas o la base de datos que se tiene en disco osirviendola algun servidor de bases de datos, se ha quedado en la memoriade la maquina del cliente, ADO.NET ha terminado su trabajo y su función.
Para mandar el dataset a el browser se tendra que pasar a algun tipo deobjeto visible que soporte el browser, los objetos que se pueden usarpara mandar el dataset a pantalla son:
1.- COMPONENTE TABLE DE HTML(USADO EN EL CURSO DE CSHARP-CGI DEPROGRAMACIONFACIL.COM)
2.- COMPONENTE HTMLTABLE DE ASP
3.- COMPONENTE DATAGRID DE ASP.NET y WINFORMS QUE SE USA EN ESTA UNIDAD
ADO NET C# BUILDER
EL NUEVO MODELO DE DATOS DE MICROSOFT ES ADO.NET, ESTE MODELO DESCANSA ENUNA SERIE DE OBJETOS ESPECIALIZADOS QUE FACILITAN EL PROCESAMIENTO DE UNABASE DE DATOS
apple
es
https://applesana.es/static/images/apple-ado-net-c-builder-1774-0.jpg
2024-10-29
El contenido original se encuentra en https://programacionfacil.com/csharp_builder/ado_net/
Todos los derechos reservados para el autor del contenido original (en el enlace de la linea superior)
Si crees que alguno de los contenidos (texto, imagenes o multimedia) en esta página infringe tus derechos relativos a propiedad intelectual, marcas registradas o cualquier otro de tus derechos, por favor ponte en contacto con nosotros en el mail bitelchux@yahoo.es y retiraremos este contenido inmediatamente