Sie sind auf Seite 1von 14

Construir una.

NET de la aplicacin en la base de datos de Oracle con Visual Studio 2005 o 2008 Aprender los procesos bsicos y esenciales que participan en la construccin de una aplicacin. NET que utiliza una base de datos Oracle. Por John Paul Cook Publicado 09 2008 Lea el Visual Studio. NET 2003 versin de esta gua Con la popularidad de. Framework NET de Microsoft, muchos desarrolladores estn vidos de informacin sobre la mejor manera de integrar las aplicaciones. NET con Oracle, no slo en trminos de conectividad bsica, sino tambin en relacin con el desarrollo de la aplicacin eficaz y eficiente utilizando Visual Studio 2005 o 2008. En este artculo voy a explicar los procesos bsicos y esenciales que participan en la construccin de un NET que utiliza una base de datos de Oracle, incluidas.: Cmo agregar referencias proyecto de apoyo a las bibliotecas de Oracle en su clase. NET Cmo crear cadenas de conexin de base de datos Oracle Cmo trabajar con conexin, comandos y objetos DataReader Usted tendr la oportunidad de aplicar lo que has aprendido en tres laboratorios de prcticas, que varan en dificultad desde lo relativamente simple a la ms compleja. El artculo imgenes son tomadas desde Visual Studio 2008, pero la experiencia es muy similar en Visual Studio 2005. Para obtener informacin acerca de cmo y laboratorios para garantizar su aplicacin, vase mi artculo "Asegurar una. NET de la aplicacin en la Base de Datos Oracle". (Tambin, ver la OTN. NET Centro de desarrollo de artculos tcnicos que cubren una amplia gama de cuestiones Oracle.NET ciclo de vida de la aplicacin.) Tenga en cuenta que la libre circulacin de Oracle Developer Tools para Visual Studio, disponible para descargar en OTN, aplicaciones proporciona un complemento de Visual Studio en el que hace que el desarrollo de. NET en mucho ms fcil y ms intuitivo de Oracle. Ese tema est fuera de nuestro alcance aqu, sin embargo. . Proveedor de datos de NET Adems del software de conectividad bsica cliente de Oracle. NET requieren el uso de lo que se conoce como un proveedor de datos administrados (donde "gestionado" se refiere a cdigo administrado por el framework. NET). El proveedor de datos es la capa entre el cdigo de la aplicacin. NET y el software de conectividad de cliente de Oracle. En casi todos los casos, el mejor rendimiento se consigue mediante el uso de un proveedor optimizado para una plataforma de base de datos especfica en lugar de los genricos. NET de datos OLE DB.

Oracle, Microsoft y otros proveedores ofrecen todos los datos. NET proveedores optimizado para Oracle. Oracle y Microsoft hacen sus proveedores de datos de Oracle disponible de forma gratuita. (Proveedor de Microsoft para. NET Framework 2.0 se incluye en el marco, pero an requiere de cliente de Oracle instalacin del software.) En este artculo, vamos a utilizar el proveedor de datos de Oracle para. NET (ODP.NET), que se incluye con la base de datos Oracle o como una descarga independiente. ODP.NET ofrece estndar de acceso a datos ADO.NET, mientras que la exposicin de las caractersticas especficas de Oracle de base de datos, tales como XML DB, optimizaciones de acceso a datos de rendimiento, y Real Application Clusters con la puesta en comn. Cuando ODP.NET y el software cliente de Oracle estn instalados, el desarrollo de aplicaciones con Visual Studio puede comenzar. Es una buena idea para confirmar la conectividad del cliente antes de comenzar el desarrollo. Si puede conectarse a Oracle utilizando el software cliente de Oracle como SQL * Plus en el mismo equipo que Visual Studio, entonces usted sabe que su software de Oracle en el cliente est debidamente instalado y configurado. Si usted es nuevo en Oracle, consulte la seccin "Instalacin. Productos NET" en la base de datos Oracle 2 das Gua del desarrollador de la informacin de fondo sobre la instalacin y configuracin de ODP.NET en concreto, o para la base de datos Oracle Biblioteca de documentacin de informacin general sobre la base de datos Oracle. Crear un proyecto en Visual Studio 2005 o 2008 Vamos a crear una aplicacin ODP.NET que recupera datos de una base de datos Oracle. Ms adelante, veremos cmo realizar el manejo de errores con ODP.NET y manejar un escenario de recuperacin de datos adicionales. Despus de iniciar Visual Studio, la primera tarea es crear un proyecto. Usted puede seleccionar Archivo | Nuevo | Proyecto tal como se muestra a continuacin o haga clic en el botn Nuevo proyecto situado en Archivo. Figura 1 Creacin de un nuevo proyecto en Visual Studio 2008 Service Pack 1 Un cuadro de dilogo Nuevo proyecto. En el lado izquierdo del cuadro de dilogo en Tipos de proyecto, seleccione el lenguaje de programacin de su eleccin. En nuestro ejemplo, "Visual Basic" fue elegido. En el lado derecho de Visual Studio Plantillas instaladas, seleccione una plantilla de proyecto. Para mantener las cosas simples, una "Aplicacin de Windows Forms" est seleccionado. Figura 2 Uso del cuadro de dilogo Nuevo proyecto Usted desea especificar nombres significativos para el nombre del proyecto (se utiliz OraWinApp) y el nombre de la solucin (en el ejemplo OraWinApp). Una

solucin contiene uno o ms proyectos. Cuando una solucin contiene slo un proyecto, muchas personas utilizan el mismo nombre para ambos. Agregar una referencia Debido a que nuestro proyecto debe conectarse a una base de datos Oracle, es necesario agregar una referencia a la DLL ODP.NET contiene el proveedor de datos de nuestra eleccin. En el Explorador de soluciones, seleccione el nombre del proyecto, haga clic derecho y seleccione Agregar referencia. Alternativamente, usted puede ir a la barra de men y seleccione Proyecto y, a continuacin, seleccione Agregar referencia. Figura 3 Adicin de una referencia El cuadro de dilogo Agregar referencia. Figura 4 Seleccin del proveedor de datos administrado ODP.NET ODP.NET se encuentra bajo el nombre del componente Oracle.DataAccess. Seleccione Oracle.DataAccess de la lista, haga clic en Aceptar para que el proveedor de datos ODP.NET conoce a su proyecto. Visual Basic y C # Declaraciones Despus de agregar las referencias, es una prctica estndar para agregar instrucciones Imports de Visual Basic o C # con declaraciones. Tcnicamente, estas declaraciones no son obligatorios, pero que le permiten hacer referencia a objetos de base de datos sin necesidad de largos, nombres completos. Por convencin, estas declaraciones aparecen en o cerca de la parte superior de un archivo de cdigo, antes de la declaracin de espacio de nombres o de clase. Visual importaciones Oracle.DataAccess.Client bsica de ODP.NET proveedor administrado de Oracle utilizando Oracle.DataAccess.Client; / / C # ODP.NET proveedor administrado de Oracle Si ha agregado la referencia, IntelliSense le ayudar a completar la adicin de una instruccin Imports o using como se muestra en la Figura 5. Figura 5 Adicin de una instruccin Imports en Visual Basic Las cadenas de conexin y objetos Una cadena de conexin de Oracle Oracle es inseparable de resolucin de nombres. Supongamos que haba un alias de base de datos de OraDb se define en un archivo tnsnames.ora de la siguiente manera: OraDb = (DESCRIPTION = (ADDRESS_LIST = (DIRECCIN = (= PROTOCOLO TCP) (HOST = ORASRVR) (PORT = 1521))

) (CONNECT_DATA = (SERVIDOR DEDICADO =) (SERVICE_NAME = ORCL) ) ) El alias OraDb define la direccin de base de datos de informacin de conexin para el cliente. Para utilizar el alias OraDb definido en el archivo tnsnames.ora se muestra arriba, se utilizara la siguiente sintaxis: Dim oradb As String = "Data Source = OraDb; User Id = scott; Contrasea tigre ="; "de Visual Basic oradb cadena = "Data Source = OraDb; User Id = scott; Contrasea tigre =;"; / / C# Usted puede modificar la cadena de conexin para evitar la necesidad de que el archivo tnsnames.ora, sin embargo. Slo tiene que sustituir el nombre del alias con la forma en que se define en un archivo tnsnames.ora. 'Visual Basic Dim oradb As String = "Data Source = (DESCRIPTION =" _ + "(ADDRESS_LIST = (ADDRESS = (= PROTOCOLO TCP) (HOST = ORASRVR) (PORT = 1521)))" _ + "(CONNECT_DATA = (= SERVIDOR DEDICADO) (SERVICE_NAME )));" = ORCL _ + "User ID = scott; Contrasea tigre ="; //C# oradb cadena = "Data Source = (DESCRIPTION =" + "(ADDRESS_LIST = (ADDRESS = (= PROTOCOLO TCP) (HOST = ORASRVR) (PORT = 1521)))" + "(CONNECT_DATA = (= SERVIDOR DEDICADO) (SERVICE_NAME = ORCL )));" + "User ID = scott; Contrasea = tigre"; Como se puede ver arriba, el nombre de usuario y contrasea se incrustan en la cadena de conexin en texto sin cifrar. Este es el mtodo ms sencillo para la creacin de una cadena de conexin. Sin embargo, el enfoque de un texto claro no es deseable desde una perspectiva de seguridad. En particular, hay que entender que compil. Cdigo de la aplicacin NET es slo ligeramente ms seguro que los archivos de texto sin cifrar el cdigo fuente. Es muy fcil de descomponer. NET DLL y archivos EXE y ver el contenido original de texto sin cifrar. (La encriptacin es, de hecho, la solucin adecuada, pero el tema sera una digresin bastante largo de nuestra discusin aqu.) A continuacin, debe crear instancias de un objeto de conexin de la clase de conexin. La cadena de conexin debe estar asociado con el objeto de conexin. Dim CONN Como OracleConnection Nueva (oradb) de Visual Basic CONN OracleConnection = OracleConnection nueva (oradb); / / C # Observe que la cadena de conexin se asocia con el objeto de conexin al ser pasado por el constructor del objeto, que est sobrecargado. otra sobrecarga

del constructor permite la sintaxis alternativa siguiente: Dim CONN Como OracleConnection Nueva () de Visual Basic conn.ConnectionString = oradb CONN OracleConnection = OracleConnection nuevo (); / / C # conn.ConnectionString = oradb; Despus de asociar una cadena de conexin con un objeto de conexin, utilice el mtodo Open para realizar una conexin real. conn.Open () de Visual Basic conn.Open (); / / C # Vamos a cubrir el tratamiento de errores ms tarde. Comando de objetos El objeto Command se utiliza para especificar el texto del comando SQL que se ejecuta, ya sea una cadena SQL o un procedimiento almacenado. Al igual que el objeto de conexin, debe crear una instancia de su clase y tiene un constructor sobrecargado. En este ejemplo, ODP.NET llevar a cabo una consulta SQL para devolver el nombre del departamento (DNAME) de la tabla de departamentos (DEPARTAMENTO), donde el nmero de departamento (DEPTNO) es de 10. Dim sql As String = "dname seleccionar departamento donde deptno = 10" 'Visual Basic Dim cmd como nuevo OracleCommand (sql, conn) cmd.CommandType = CommandType.Text cadena sql = "dname seleccionar departamento donde deptno = 10"; / / C # OracleCommand cmd = new OracleCommand (sql, conn); cmd.CommandType = CommandType.Text; Uso de diferentes sobrecargas, la sintaxis se puede estructurar un poco diferente. El objeto Command tiene mtodos para ejecutar el texto del comando, que se ver en la siguiente seccin. Diferentes mtodos son apropiados para los diferentes tipos de comandos SQL. Recuperar un valor escalar Recuperar datos de la base de datos puede llevarse a cabo por instancias de un objeto OracleDataReader y utilizando el mtodo ExecuteReader, que devuelve un objeto OracleDataReader. los datos devueltos es accesible por pasar bien el nombre de la columna o la columna de base cero ordinales a la OracleDataReader. Dim dr Como OracleDataReader cmd.ExecuteReader = () de Visual Basic dr.Read () Label1.Text = dr.Item ("dname") 'recuperar por nombre de columna Label1.Text dr.Item = (0) 'recuperar la primera columna de la lista de seleccin Label1.Text dr.GetString = (0) 'devuelve un. NET tipo de datos Label1.Text dr.GetOracleString = (0) 'devuelve un tipo de datos de Oracle No se escriben de acceso para el retorno. NET tipos de datos nativos y otros para el retorno de datos nativos de Oracle tipos, todos los cuales estn disponibles en C #, Visual Basic, o cualquier otro. NET. ordinales de base cero

se pasan a los descriptores de acceso para especificar qu columna para volver. dr = OracleDataReader cmd.ExecuteReader (); / / C # dr.Read (); . Label1.Text = dr ["dname"] ToString (); / / C # recuperar el nombre de la columna . Label1.Text = dr.GetString (0) ToString (); / / devuelve una RED de tipo de datos. . Label1.Text = dr.GetOracleString (0) ToString (); / / devolver un tipo de datos de Oracle En este ejemplo simplificado, el valor devuelto de DNAME es una cadena y se utiliza para establecer el valor de la propiedad de texto del control Label, que tambin es una cadena. Pero si DEPTNO, que no es una cadena, haba sido recuperada por el contrario, habra una diferencia en el tipo de datos. Los intentos. NET para convertir implcitamente a partir de un tipo de datos a otro cuando la fuente y el destino de los tipos de datos no coinciden. A veces los tipos de datos son incompatibles y la conversin implcita no, una excepcin. Pero incluso cuando funciona, es todava mejor uso explcito conversiones de tipos de datos en lugar de la conversin implcita de tipo de datos. Una conversin explcita al entero se muestra a continuacin: Label1.Text = CStr (dr.Item ("deptno")) 'Visual Basic para reparto entero cadena C # no es tan indulgente como Visual Basic en las conversiones implcitas. Te encontrars haciendo conversiones explcitas: . Label1.Text = dr.GetInt16 ("deptno") ToString (); / / C # Puede convertir explcitamente los valores escalares y matrices. Close y Dispose Cierre el objeto de conexin o el mtodo Dispose debe ser llamado a cerrar la conexin con la base de datos. El mtodo Dispose llama al mtodo Close. conn.Close () de Visual Basic conn.Dispose () de Visual Basic conn.Close (); / / C # conn.Dispose (); / / C # Usted no tiene que llamar explcitamente a Close o Dispose si utiliza la palabra clave con VB o C # 's usando palabras clave. utilizando (conn = OracleConnection OracleConnection nueva (oradb)) / / C # { conn.Open (); OracleCommand OracleCommand cmd = new (); cmd.Connection = CONN; cmd.CommandText = "dname seleccionar departamento donde deptno = 10"; cmd.CommandType = CommandType.Text;

dr = OracleDataReader cmd.ExecuteReader (); dr.Read (); label1.Text = dr.GetString (0); } Adems, OracleCommand incluye un mtodo Dispose; OracleDataReader incluye un mtodo Close y Dispose. recursos de clausura y eliminacin. NET liberar el sistema, asegurando una mayor rendimiento de la aplicacin eficiente, que es especialmente importante bajo condiciones de carga elevada. Usted puede experimentar con algunos de los conceptos que hemos aprendido aqu en la prctica 1 (Recuperacin de datos de la base de datos) y Laboratorio 2 (Agregar interactividad). Control de errores Cuando se produce un error. NET gracia debe controlar el error e informar al usuario con un mensaje significativo. . Try-catch-Por ltimo el control estructurado de errores es una parte de NET, aqu es un ejemplo relativamente minimalista de utilizar el try-catch-Por ltimo sintaxis: 'Visual Basic Pruebe conn.Open () Dim cmd Como OracleCommand Nueva cmd.Connection = CONN cmd.CommandText = "dname seleccionar departamento donde deptno =" + TextBox1.Text cmd.CommandType = CommandType.Text Si dr.Read () Luego Label1.Text = dr.Item ("dname") 'o dr.Item uso (0) End If Catch ex As Exception 'detecta cualquier error MessageBox.Show (ex.Message.ToString ()) Por ltimo "En una aplicacin real, poner el cdigo de limpieza aqu. End Try //C# pruebas { conn.Open (); OracleCommand OracleCommand cmd = new (); cmd.Connection = CONN; cmd.CommandText = "dname seleccionar departamento deptno donde =" + textBox1.Text; cmd.CommandType = CommandType.Text; if (dr.Read ()) / / C #

{ . Label1.Text = dr ["dname"] ToString (); / / O el uso dr.GetOracleString (0). ToString () } } catch (Exception ex) / / detecta cualquier error { MessageBox.Show (ex.Message.ToString ()); } finalmente { / / En una aplicacin real, poner el cdigo de limpieza aqu. } Aunque este enfoque con gracia capturar cualquier error en el intento de obtener los datos de la base de datos, no es fcil de usar. Por ejemplo, visita el siguiente mensaje aparece cuando la base de datos no est disponible: Figura 6 Un ORA-12545 error capturados y muestra al usuario ORA-12545 es muy significativa para un DBA Oracle o desarrollador, pero no para un usuario final. Una mejor solucin es aadir una declaracin de capturas adicionales para atrapar los errores de base de datos ms comunes y proporcionar mensajes de fcil uso. Catch ex As OracleException 'capturas slo los errores de Oracle Seleccione el asunto ex.Number Caso 1 MessageBox.Show ("Error al intentar insertar datos duplicados.") Caso 12.545 MessageBox.Show ("La base de datos no est disponible.") Case Else MessageBox.Show ("error de base de datos:" + ex.Message.ToString ()) End Select Catch ex As Exception 'detecta cualquier error MessageBox.Show (ex.Message.ToString ()) captura (OracleException ex) / / capturas slo los errores de Oracle { interruptor (ex.Number) { Caso 1: MessageBox.Show ("Error al intentar insertar datos duplicados."); break; caso 12.545: MessageBox.Show ("La base de datos no est disponible."); break; por defecto: MessageBox.Show ("error de base de datos:" + ex.Message.ToString ()); break;

} } catch (Exception ex) / / detecta cualquier error no previamente capturado { MessageBox.Show (ex.Message.ToString ()); } Fjese en las dos declaraciones de capturas en el ejemplo de cdigo anterior. Si no hay errores de Oracle para la captura, el grupo de la primera declaracin se pasa por alto, dejando cualquier otro error no-Oracle para incurrir en la segunda declaracin. declaraciones de captura deber ser declarada por el cdigo de ms especfica a la mayora en general. Despus de implementar el cdigo de control de excepciones de uso fcil, el ORA-12545 mensaje de error aparece como sigue: Figura 7 Un mensaje de error fcil de usar para un ORA-12545 error El ltimo bloque de cdigo se ejecuta siempre, independientemente de si se ha producido un error. Es donde el cdigo de limpieza pertenece. Si usted no usa Uso o el uso, usted debe disponer de su conexin y otros objetos en el ltimo bloque de cdigo. Recuperar varios valores mediante DataReader Hasta ahora, nuestros ejemplos slo mostr cmo recuperar un nico valor. Un OracleDataReader puede recuperar los valores de varias columnas y varias filas. Consideremos primero una columna mltiples, una consulta de una hilera: deptno seleccionar, dname, loc del departamento donde deptno = 10 Para obtener los valores de las columnas, ya sea ordinales de base cero o nombres de columna se puede utilizar. Ordinales son relativas a la orden en la consulta. Por lo tanto, el valor de la columna LOC puede ser recuperada en Visual Basic utilizando dr.Item (2) o dr.Item ("loc"). He aqu un fragmento de cdigo que concatena la DNAME y columnas LOC de la consulta anterior: Label1.Text = "El signo" + dr.Item ("dname") + "departamento est en" + dr.Item ("loc") 'VB label1.Text = "El signo" + dr ["dname"]. ToString () + "departamento est en" + dr ["loc"] ToString ();. / / C # Consideremos ahora una consulta que devuelve varias filas: deptno seleccionar, dname, loc del departamento Para procesar varias filas de regresar de un OracleDataReader, algn tipo de construccin de bucle es necesario. Por otra parte, un control que puede mostrar varias filas es deseable. Un OracleDataReader es un avance de slo el cursor de slo lectura, por lo que no se puede enlazar a un control de actualizar o desplazable plenamente como un control DataGrid de Windows Forms. Un OracleDataReader es compatible con un control ListBox, como el fragmento de cdigo siguiente se muestra: Mientras dr.Read () 'de Visual Basic ListBox1.Items.Add ("El signo" + dr.Item ("dname") + "departamento est en" + dr.Item ("loc"))

Fin Mientras while (dr.Read ()) / / C # { ListBox1.Items.Add ("El signo" + dr ["dname"]. ToString () + "departamento est en" + dr ["loc"] ToString ()).; } Prctica 3 (Recuperar varias columnas y filas con un OracleDataReader) pone de relieve algunos de estos conceptos. Generar y ejecutar en x64 Cuando se ejecuta Visual Studio 2008 en un sistema operativo x64, los valores predeterminados de solucin de Active plataforma para cualquier CPU. Un cambio que a 86 antes de construir su proyecto. Figura 8 cambios de cualquier CPU x86 en la construccin de una plataforma de 64 bits Conclusin En este artculo te ha introducido en el proceso de acceso a bases de datos Oracle utilizando. Lenguajes de programacin NET. Ahora debe tener la capacidad para conectarse a la base de datos y recuperar varias columnas y filas. Prctica 1: Recuperar datos de la base de datos Comenzamos con el requisito de que usted ha creado un proyecto y agreg una referencia tal como se muestra anteriormente en este artculo. 1.Continue mediante la adicin de un control de botn y un control de etiqueta a la forma de Windows. Asegrese de dejar espacio por encima de los controles para permitir que las adiciones que se harn en el laboratorio 2. Figura 9 Laboratorio de una forma con los controles de botn y la etiqueta 2.Add cdigo para recuperar los datos de la base de datos Oracle y mostrar los resultados en el formulario. Coloque el cdigo en un controlador de eventos Click para el botn. La forma ms fcil para empezar con esta tarea es hacer doble clic en el botn, ya que crear un trozo del controlador de eventos. Figura 10 controlador de evento Click trozo 3.Aadir Visual Basic importaciones declaraciones antes de la declaracin pblica de clase o C # con declaraciones antes de la declaracin de espacio de nombres. Visual importaciones Oracle.DataAccess.Client 'Basic, Oracle ODP.NET proveedor administrado utilizando Oracle.DataAccess.Client; / / C #, ODP.NET proveedor administrado

de Oracle 4.Aadir de Visual Basic versin del cdigo, haga clic en controlador de eventos entre el Private Sub y End Sub (asegrese de reemplazar ORASRVR con el nombre de host de su servidor): Dim oradb As String = "Data Source = (DESCRIPTION = (ADDRESS_LIST =" _ + "(= DIRECCION (PROTOCOLO = TCP) (HOST = ORASRVR) (PORT = 1521)))" _ + "(CONNECT_DATA = (= SERVIDOR DEDICADO) (SERVICE_NAME )));" = ORCL _ + "User ID = scott; Contrasea tigre ="; Dim CONN Como OracleConnection Nueva (oradb) de Visual Basic conn.Open () Dim cmd Como OracleCommand Nueva cmd.Connection = CONN cmd.CommandText = "dname seleccionar departamento donde deptno = 10" cmd.CommandType = CommandType.Text Dim dr Como OracleDataReader cmd.ExecuteReader = () dr.Read () 'sustituir esta declaracin en el laboratorio de al lado Label1.Text dr.Item = ("dname") 'o dr.Item (0), eliminar en el laboratorio de al lado dr.Dispose () cmd.Dispose () conn.Dispose () Agregue el cdigo C # siguiente al controlador de eventos haga clic entre {y} llaves para el controlador del botn, haga clic en evento (asegrese de reemplazar ORASRVR con el nombre de host de su servidor): oradb cadena = "Data Source = (DESCRIPTION = (= ADDRESS_LIST" + "(= DIRECCION (PROTOCOLO = TCP) (HOST = ORASRVR) (PORT = 1521)))" + "(CONNECT_DATA = (= SERVIDOR DEDICADO) (SERVICE_NAME = ORCL )));" + "User ID = scott; Contrasea = tigre"; CONN OracleConnection = OracleConnection nueva (oradb); / / C # conn.Open (); OracleCommand OracleCommand cmd = new (); cmd.Connection = CONN; cmd.CommandText = "dname seleccionar departamento donde deptno = 10"; cmd.CommandType = CommandType.Text; dr = OracleDataReader cmd.ExecuteReader (); dr.Read (); / / sustituir esta declaracin en el laboratorio de al lado . Label1.Text = dr ["dname"] ToString (); / / eliminar en el laboratorio de al lado dr.Dispose ();

cmd.Dispose (); conn.Dispose (); 5.Run la aplicacin. Haga clic en el botn. Debera ver lo siguiente: Figura 11 Los datos recuperados con xito. Prctica 2: Adicin de interactividad Ahora que los fundamentos de la base de datos de acceso se implementan en el cdigo, el siguiente paso es aadir interactividad a la aplicacin. En lugar de ejecutar la consulta codificado, un control de cuadro de texto se puede agregar a aceptar una entrada del usuario para el nmero de departamento (es decir, DEPTNO). 1.Add un cuadro de texto y otro de control de control de etiqueta a la forma como se muestra a continuacin. Establezca la propiedad de texto del control Label2 a Enter DEPTNO: y asegrese de que la propiedad Text de TextBox1 no se establece nada. Figura 12 Prctica 2 formulario con los controles de botn y la etiqueta 2.Modify el cdigo que define la cadena de seleccionar: cmd.CommandText = "dname seleccionar departamento donde deptno =" + TextBox1.Text 'VB cmd.CommandText = "dname seleccionar departamento deptno donde =" + textBox1.Text; / / C #> 3.Run la aplicacin. Prueba de la aplicacin mediante la introduccin de 10 para el DEPTNO. Vuelva a probar la aplicacin mediante la introduccin de un invlido DEPTNO (por ejemplo, 50). La solicitud se cancelar. Figura 13 Una excepcin no controlada 4.Modify su cdigo para evitar un error cuando un DEPTNO no vlido. Recordemos que el mtodo ExecuteReader en realidad devuelve un objeto. Vuelva a colocar la lnea que contiene dr.Read con todas de las siguientes afirmaciones. Si dr.Read () Then 'Visual Basic Label1.Text = dr.Item ("dname"). ToString () Ms Label1.Text = "No se encontr deptno" End If if (dr.Read ()) / / C # { . Label1.Text = dr ["dname"] ToString ();; } ms { label1.Text = "No se deptno encontrado";

} Pruebe la aplicacin introduciendo un DEPTNO que no existe. Ahora la aplicacin ya no se aborta. Indique la letra A en lugar de un nmero y haga clic en el botn. Se anula la aplicacin. Claramente, nuestra aplicacin necesita un mayor acercamiento a los errores de manipulacin. Aunque se podra argumentar que la aplicacin no debe permitir al usuario realizar entradas no vlidas que podra causar un error, en ltima instancia, la aplicacin debe tener el control de errores robustos agreg. No todos los errores se pueden prevenir, por lo que el control de errores deben ser implementadas. Prctica 3: Recuperar varias columnas y filas con un OracleDataReader Ahora que un solo valor se ha recuperado, el siguiente paso es recuperar varias columnas y filas con un OracleDataReader. Un control ListBox se agrega al formulario para mostrar los resultados. 1.Add un control ListBox al formulario. Cambiar el tamao del control para cubrir la mayor parte de la anchura de la forma como se muestra a continuacin. Figura 14 Formulario con ListBox agreg 2.Retire la clusula where de la consulta y agregar las columnas adicionales: cmd.CommandText = "deptno seleccionar, dname, loc del departamento de" Visual Basic " cmd.CommandText = "deptno seleccionar, dname, loc del departamento"; / / C # 3.Los resultados de la consulta ser ledo en un bucle while y rellenar el control ListBox. Modificar el cdigo de Visual Basic para el siguiente aspecto: Dim oradb As String = "Data Source = (DESCRIPTION = (ADDRESS_LIST =" _ + "(= DIRECCION (PROTOCOLO = TCP) (HOST = ORASRVR) (PORT = 1521)))" _ + "(CONNECT_DATA = (= SERVIDOR DEDICADO) (SERVICE_NAME )));" = ORCL _ + "User ID = scott; Contrasea tigre ="; Dim CONN Como OracleConnection Nueva (oradb) de Visual Basic conn.Open () Dim cmd Como OracleCommand Nueva cmd.Connection = CONN cmd.CommandText = "deptno seleccionar, dname, loc del departamento" cmd.CommandType = CommandType.Text Dim dr Como OracleDataReader cmd.ExecuteReader = () Mientras dr.Read () ListBox1.Items.Add ("El signo" + dr.Item ("dname") + _ "El departamento est en" + dr.Item ("loc"))

Fin Mientras dr.Dispose () cmd.Dispose () conn.Dispose () Modificar el cdigo de C # para el siguiente aspecto: oradb cadena = "Data Source = (DESCRIPTION = (= ADDRESS_LIST" + "(= DIRECCION (PROTOCOLO = TCP) (HOST = ORASRVR) (PORT = 1521)))" + "(CONNECT_DATA = (= SERVIDOR DEDICADO) (SERVICE_NAME = ORCL )));" + "User ID = scott; Contrasea = tigre"; CONN OracleConnection = OracleConnection nueva (oradb); / / C # conn.Open (); OracleCommand OracleCommand cmd = new (); cmd.Connection = CONN; cmd.CommandText = "deptno seleccionar, dname, loc del departamento"; cmd.CommandType = CommandType.Text; dr = OracleDataReader cmd.ExecuteReader (); while (dr.Read ()) { ListBox1.Items.Add ("El signo" + dr ["dname"]. ToString () + "El departamento est en" + dr ["loc"] ToString ()).; } dr.Dispose (); cmd.Dispose (); conn.Dispose (); 4.Run la aplicacin. El control ListBox se rellena con todos los nombres de departamento y los lugares de la tabla DEPT. La descarga de cdigo de control de errores se han implementado.
Nuevo! Haz clic en las palabras que aparecen arriba para ver traducciones alternativas. Descartar

Das könnte Ihnen auch gefallen