taller de programación de dispositivos móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ici 592/net...

44
.NET CF Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina 3-20 http://www.inf.ucv.cl/~jrubio [email protected]

Upload: danghuong

Post on 01-Nov-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Taller de Programación de Dispositivos Móviles

José Miguel Rubio L.

Oficina 3-20

http://www.inf.ucv.cl/~jrubio

[email protected]

Page 2: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Windows Mobile y .NET CF

Windows Mobile = Windows CE + programas + extensiones

Modular como Windows CE, código a disposición de los ensambladores/operadoras

Dirigido a:Pocket PC, PPC Phone EditionSmartphone (SP)Portable Media Center (PMC)

Page 3: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Capacidad

Plataforma

.NET CF 2.0

MFC 8.0, ATL 8.0Broad managed code support Notifications Broker, Location, Camera, Watson, D3DM

.NET CF SP2

VGA (PPC)QVGA (SP)SquareLandscape

ATL 4.2, .NET CF

Enhanced Emulator Configuration Mgr,Bluetooth, SMS

MFC, ATL

Active SyncConnection MgrMAPIOBEXTelephony

MFC

Win32,POOM

MejorDesarrollo

Visual Studio 2005(C#, VB.NET, C++)

eVC 3 (C++)eVC 4 (C++)

VS.NET 2003 (C#, VB.NET)

eVC 3 (C++)eVC 4 (C++)

VS.NET 2003(C#, VB.NET)

eVC 3 (C++)eVB 3 (VB)

eVC 3 (C++)eVB 3 (VB)

SO WinCE 5.0WinCE 4.2WinCE 4.2WinCE 3.0WinCE 3.0

Dispositivos

FuturaPlataformaWindows Mobile2003

Second Edition200320022000

Windows Mobile y .NET CF

Page 4: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

DisplayDisplayUSB or SerialUSB or Serial

ProcessorProcessorMemoryMemory

GSM/GPRSGSM/GPRSCDMA/1xRTTCDMA/1xRTT

Device Device HardwareHardware

WiFiWiFiBluetoothBluetooth

RadioRadio

DriversDrivers

Windows MobileWindows Mobile CE DBCE DBActiveSyncActiveSyncSQL MobileSQL Mobile

Pocket OutlookPocket OutlookPocket Internet ExplorerPocket Internet ExplorerWindows Media PlayerWindows Media Player

WindowsWindows CECE

NativeNative

Win32Win32

MFCMFC ATLATL

ManagedManaged

.NET Compact.NET CompactFramework 2.0Framework 2.0

Server sideServer side

ASP .NETASP .NETMobile ControlsMobile Controls

** = Managed wrappers= Managed wrappers

Visual Studio 2005Visual Studio 2005

Home ScreenHome ScreenUser Interface/ShellUser Interface/ShellHTML ControlHTML ControlDOMDOM

GAPIGAPICameraCameraD3DMD3DM

Remote APIRemote APIConfiguration*Configuration*BluetoothBluetoothNot. BrokerNot. BrokerPocket WatsonPocket Watson

Connection ManagerConnection ManagerTAPI*TAPI*SMS* SMS* MAPI* MAPI* POOM*POOM*

MultimediaMultimediaCommunicationCommunicationDevice ManagementDevice Management PresentationPresentation

SQL MobileSQL MobileADO CEADO CEXMLXMLCE DBCE DBOLE DBOLE DB

Data AccessData Access

Software Platform (APIs)Software Platform (APIs)

Windows Mobile y .NET CF

Page 5: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Contenidos

Introducción a .NET Introducción a Compact FrameworkSintaxis de C#Operaciones básicas con C#Propiedades y DataBindingAcceso a Bases de DatosInvocación de Web Services

Page 6: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Introducción (I)

¿Qué es .NET?Un conjunto de tecnologías que Microsoft ha creado y posibilitan crear programas y comunicarlos entre sí con independencia del lenguaje de programación y la plataforma de ejecución.¿Para qué tipo de máquina? � CUALQUIERA que soporte .NET

Se crea un programa y éste puede ejecutarse en cualquier máquina con .NET instalado.Puede comunicarse con otros programas independientemente de la plataforma y lenguaje

Page 7: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Introducción (II)

Además, el programa puede haber sido hecho en cualquiera de los lenguajes del conjunto .NET, que es muy amplio

C++J++C#Visual Basic.NETPascal, COBOL, Delphi, Python, .......

El conjunto cada día crece más“Escribe en el lenguaje que quieras y ejecútalo en la máquina que quieras”

Page 8: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Introducción (III)

Para conseguir esto se han creado una serie de elementos básicos

Common Language Runtime (CLR)Base Class Library (BCL)

Y unos elementos que se ejecutan sobre ellos (Windows Forms, Web Services, ...)

Page 9: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Arquitectura (I)

Common Language Runtime

.NET Framework Base Classes

ASP.NET Servicios Web

Windows Forms

Page 10: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Arquitectura (II)

Common Language RuntimeElemento que se encarga de la ejecución. El corazón de la ejecución de una aplicación en .NETSe encarga de ejecutar las aplicaciones, crear el entorno de ejecución en la máquina, etc...El concepto es similar al que usa JAVA: El código fuente es convertido a código intermedio ‘standard’(MSIL) El CLR traduce este código intermedio al código máquina de la arquitectura concreta, directamente, para que el procesador ejecute las instrucciones.

Page 11: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Arquitectura (III)

Common Language Runtime (CLR)Ventaja en .NET � CUALQUIER lenguaje .NET se traduce al código intermedio.Da igual en qué lenguaje se cree la aplicación, al final se tendrá el mismo código intermedio a ejecutar. El CLR ejecutará lo mismo provenga del lenguaje de programación que provengaPosibilidad � INTEGRACIÓN MULTILENGUAJE: Llamar a métodos o heredar de clases escritas en otros lenguajes. Todo converge al final a MSIL

Page 12: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Arquitectura (IV)

Base Class Library (BCL)Conjunto de librerías que usan los lenguajes de programación .NETEs un conjunto de clases que ofrece la funcionalidad básica: Desde vectores y arrays a sockets y librerías de Base de DatosPor supuesto, cualquier usuario puede aumentar la librería creando nuevas clases que pueden o no heredar de éstas

Código Fuente Código Intermedio Código MáquinaCompilar CLR

Ejecuc

ión

Page 13: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Arquitectura (V)

Elementos que residen encima de CLR y BCL

Windows Forms: Aplicaiones de formulariosASP.NET: Generación que evoluciona de los ASP’s comunes. Creación de páginas web dinámicasWeb Services: invocación remota a servicios de todo tipo a través de la web

Page 14: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Usar .NET en dispositivos móviles

Aprovechando esta propiedad de .NET, se pueden crear aplicaciones para móviles fácilmente¿Y si existiera un CLR especial para dispositivos móviles?

Podríamos programar normalmente, compilar, crear el lenguaje intermedio (MSIL) y el CLR se encargaría de ejecutarlo en el procesador de estos dispositivos

Para eso se ha creado .NET Compact Framework

Page 15: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

.NET Compact Framework (I)

La idea es poder programar estos dispositivos sin necesidad de ser especialista en ellosSe programarían tal y como programamos aplicaciones de un PC de sobremesa, el CLR se encargaría del restoProblema� Un procesador de un dispositivo de este tipo es mucho menos potente que el de un PC de sobremesa

Es necesario un CLR reducido, menos potente que el CLR ordinario

Page 16: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

.NET Compact Framework (II)

¿Consecuencia de esto?Al tener menos potencia las clases que requieran mayor proceso o que por alguna otra razón no se puedan implementar en estos dispositivos se eliminanQueda un subconjunto de las clases de sobremesaSin embargo, se ha conseguido que el conjunto funcional de clases en Compact Framework aún siga siendo muy amplioEl objetivo es que el programador acostumbrado al CLR normal no se vea ‘con las manos cortadas’Además, las características básicas propias de .NET siguen intactas

Page 17: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

¿Cómo programar en .NET CF?

Para empezar a usar CF usaremos el lenguaje de programación C#Como herramienta de desarrollo usaremos Visual Studio .NET 2003

Visual Studio tiene varias plantillas de proyectos, dependiendo del tipo. Usaremos la específica de dispositivos móviles.Visual Studio Ofrece funciones útiles como emulador de PocketPC, el despliegue automático de la aplicación a un dispositivo real, etc

Page 18: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

¿Cómo programar en CF?

Con Visual Studio se puede ejecutar la aplicación en un dispositivo móvil real, mientras se hace debug en el mismo PCHay otras herramientas alternativas de desarrollo

Desarrollo en C# : SharpDevelop (Open Source) http://www.icsharpcode.net/opensource/sd/Etc...

Page 19: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

El lenguaje C# (I)

C# es muy parecido a JavaPequeñas diferencias de sintaxis, algunos elementos nuevos y diferentes libreríasPor ser parte de .Net

Lenguaje autocontenido � no necesita ficheros extra demás del fuente (ficheros de cabecera, etc..) guarda toda la información necesaria él mismoRecolector de basura � no necesita que el programador se encargue de gestionar la memoria

Page 20: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

El lenguaje C# (II)¡En C# CUALQUIER cosa hereda de object!

Hasta los tipos básicos como int se pueden tratar como objetos, a diferencia de Java

Se pueden redefinir operadores, como en C++ y a diferencia de JavaNo es necesario usar punteros, pero para el que quiera hacerlo (o necesite migrar una aplicación hecha por ejemplo en C++) existe la opción �Código Inseguro (unsafe)Las clases de la librería base se encuentran divididas en grupos. En Java se llaman paquetes, en C# se llaman NameSpaces (espacios de nombres)

Page 21: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Namespaces

namespaceJugueteria{

classJuguete{

...}

}

Crear un Namespace:

Usar un Namespace (en Java se hace con ‘import’)

usingJugueteria;

Page 22: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Principales Namespaces

System � Los tipos más frecuentemente usados (tipos básicos y tablas, fechas...)System.Collections � Colecciones de datos más comunes (pilas, colas, listas ...)System.Data � Manipulación de Bases de DatosSystem.IO � Manipulación de ficherosSystem.Net � Comunicaciones en redSystem.Threading � Manipulación de ThreadsSystem.Windows.Forms � FormulariosSystem.Web.UI.WebControls � Controles Web

Page 23: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Más sintaxis (I)

En C# la clase string (con minúscula) se puede comparar con el operador == y hasta los tipos básicos como int tienen método ToString()El acceso a consola es con System.Console.WriteLine(“Hola Mundo!”); System.Console.ReadLine();Herenciapublic class Trabajador: PersonaConstantespublic const int NO_VALIDO = -1;

Page 24: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Más sintaxis (II)

Instrucción nueva � foreach recorre automáticamente una colección de datos (array, lista, etc...). Como un for que pasa por todos los elementos de la colección.Suponiendo que la variable trabajadores es una lista de instancias de la clase Trabajador:foreach (Trabajador tt in trabajadores)

{

Console.WriteLine( tt.ToString() );

}

La instrucción recorre la colección trabajadores, extrae cada uno de los elementos de ella, que son de tipo Trabajador, los coloca en la variable t y aplica las instrucciones del bucle

Page 25: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Un ‘Hola Mundo’ para PocketPC

Visual Studio 2003 � Nuevo Proyecto �C# y Smart Device ApplicationPrimer control de formulario � TextBoxEvento Form_Loadprivate void FormHola_Load( object sender, System.EventArgs e)

{

this .textHola.Text = "¡¡Hola Mundo!!";

}

Page 26: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Controles clásicos de formulario (I)

Form, Label, TextBoxAtributo Text

CheckBox, RadioButtonAtributos Text y Checked

ListBox, ComboBoxAtributos Items (indizado) y SelectedIndexAtributos SelectedItem y SelectedValue

CommandEvento OnClick

Page 27: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Controles clásicos de formulario (II)

PanelAtributo Controls

TimerAtributo Interval, evento Tick

MainMenuMenú principal del formulario

InputPanelTeclado en pantallaEn dispositivos móviles suele ser la única posibilidad de entrada de textoPara que aparezca es necesario un MainMenu

Page 28: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Listas en C#Para almacenar listas de elementos la clase más usada es ArrayListSimilar al Vector en JavaNamespace � System.CollectionsCrear

ArrayList a = new ArrayList();

Añadira.Add( object );

Acceder a un elemento (usar casting)string elemento = ( string )a[0];

Eliminara.RemoveAt( int índice ); a.Remove( object );

Page 29: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Propiedades (I)La forma propia del lenguaje para acceder a los atributos. En Java son los métodos get/setAñadir una propiedad a un atributoclass juguete {

private string nombre;

public string Nombre

{

get { return nombre;}

set {nombre = value ;}

} }

La palabra ‘value’ representa el valor que se le quiere dar a la propiedad

Page 30: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Propiedades (II)

A diferencia de Java, a la hora de acceder a las propiedades, en C# no es necesario escribir los métodos get/setJuguete j = new Juguete();

j.Nombre = “Tambor”; //set, value = “Tambor”

string nombreJuguete = j.Nombre //get

De esta manera se consigue controlar el acceso a los atributos y sus valores (controlar valores no válidos, propiedades de sólo lectura sin set..)

Page 31: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Controles ligados a datos: DataBound (I)

En lugar de recorrer una colección de datos y manualmente rellenar items de un control de formulario, podemos hacer esto de forma automáticaLos controles tienen un campo DataSource que les sirve para ligarse a los datosEste campo puede ser cualquier tipo de colección: arrays, ArrayLists...O incluso una colección de datos que proviene directamente de una base de Datos

Nos ahorramos leer los registros de una consulta SQL uno por uno y rellenar

Page 32: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Controles ligados a datos: DataBound (II)

DataBound simplestring[] nombres = new string[] {“Tambor”, “Bratz”, “Action Man”};

ListBox lista = new ListBox();

...

lista.DataSource = nombres;

Lista resultado en el formulario

Page 33: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

DataBound (III)

La colección no tiene por qué ser de tipos básicos, puede ser de clases complejasSi el control es en forma de tabla, cada propiedad de la clase será una columna.Si el control sólo puede manejar una propiedad (ListBox) hemos de indicarle qué propiedad utilizar

Atributo DisplayMember � string, le damos el nombre de la propiedad a visualizarAtributo ValueMember � igual que DisplayMember, pero se aplica al atributo ‘value’, si existe, asociado a cada item

Page 34: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Acceso a Bases de Datos

Con Compact Framework se puede acceder a una Base de Datos remota o bien tener una pequeña BD en el dispositivoSe sigue el modelo ADO.NET, evolución de ADOCrear una BD usando el driver ‘SQL Server CE’implica las siguientes clases

SqlCeEngine � Crear la BDSqlCeConnection � Conexión a la BDSqlCeCommand � Comandos SQL de creación de tablas, etc..

Namespace System.Data.SqlServerCe

Page 35: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

SqlCeEngineCrea la Base de Datos dentro del dispositivo, en forma de un archivo con extensión *.sdf en la ruta que se le especifiqueCrear un engine: Especificar el archivo de la BD

SqlCeEngine engine = new SqlCeEngine( “Data Source = \\ruta\\Jugueteria.sdf”);

Crear la BD: crea el archivo y monta la BDengine.CreateDatabase();

Si el archivo existe ya, puede haber problemasNameSpace � System.IOFile.Exists (“NombreArchivo”);

File.Delete (“NombreArchivo”);

Page 36: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

SqlCeConnection

Se conecta a una BD existente y mantiene una sesión con ella, para enviar comandos, consultas, etcCrear una conexión

SqlCeConnection con = newSqlCeConnection( “Data Source = Jugueteria.sdf” );

Abrir la conexióncon.Open();

Cerrar la conexióncon.Close();

Page 37: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

SqlCeCommand

Manda comandos y consultas a una BD con una conexión abiertaCrear un SqlCeCommand: a partir de una conexión abierta

SqlCeCommand comm = con.CreateCommand();

Mandar un comandoPropiedad CommandText � Sentencia SQLMétodo ExecuteNonQuery() � ejecución del comando contra la Base de Datos

Page 38: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

ExcepcionesLas excepciones se tratan igual que en Java (try / catch / finally)La diferencia es que en el catch sólo es obligatorio poner el tipo de excepción, no es necesario declarar la variable, y no es necesario capturar toda excepción con try / catch. Se propagan automáticamente

catch ( SqlCeException ){}

catch ( SqlCeException SqlEx ){}

Los mensajes de error lo normal es que se muestren en ventanas de mensajes:

MessageBox.Show (“Texto”, “Título”);

Page 39: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Consultas a una BD

Siguiendo el modelo ADO.NET, para realizar una consulta se ven implicadas las siguientes clases

SqlCeConnectionSqlCeCommand � Método ExecuteReader()SqlCeDataReader

Page 40: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

SqlCeDataReader

El método ExecuteReader() devolverá un objeto de esta clase como resultado, el método de lectura es similar a JavaRead() � Avanza al siguiente registro. Devuelve false si no hay más registros, true en caso contrario. Es necesario invocar Read() antes de la primera lecturaGetString( int columna ) � Lee el valor (string) de la columna que se le indique. Hay variantes

GetInt32( int )GetSqlMoney( int )...

Page 41: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

DataSetOtro tipo de lectura de BDEstructura de datos compleja que recoge toda la consulta hecha contra la BDPuede colocarse como ‘DataSource’ para ligar el control a los datos de la BD (DataBound)Para rellenar un DataSet usaremos una clase llamada SqlCeDataAdapterSqlCeDataAdapter dataAdapter = new

SqlCeDataAdapter(“Consulta SQL", conexión_BD);

DataSet dataSet = new DataSet();

dataAdapter.Fill(dataSet);

El DataSource más común es dataSet.Tables[0]

Page 42: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Web Services (I)Un Web Service es un servicio residente en local o en otra máquina y que puede ser invocado en forma de método de forma remota � Una forma más de invocación remotaPara hacer la invocación, pasar los parámetros y recoger el resultado se utiliza una comunicación basada en XML (standard)La invocación se hace por Web (puerto 80) � No es cortada por FireWallsMontones de Web Services Gratuitos

http://www.xmethods.nethttp://www.capescience.com/webserviceshttp://www.webservicex.net/WS/wscatlist.aspx

Page 43: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Web Services (II).NET CF puede invocar Web ServicesDesde Visual Studio 2003 se pueden localizar Web Services muy fácilmente

Proyecto�Solution Explorer�References�AñadirReferencia WebIntroducir la url donde se encuentra el servicio y añadir referenciaIncluir el NameSpace nuevo que se ha creado (using)

El NameSpace del proyecto es Ejercicio y el Web Service estáen www.deusto.es � using Ejercicio.es.deusto.www;

Aparecen clases en ese NameSpace para invocar el servicioSe usan normalmente, pero son objetos remotos

Page 44: Taller de Programación de Dispositivos Móvileszeus.inf.ucv.cl/~jrubio/docs/2008-02/ICI 592/NET CF.pdf · Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina

.NET CF

Referencias en la Web

.NET CF Development Center -http://msdn.microsoft.com/smartclient/understanding/netcf/OpenNetCf - http://www.opennetcf.orgMSMobiles - http://msmobiles.com/