Requisitos:
IDE: Visual Studio 2005 .NET
Base de datos: Oracle
Paso 1: Creación
aplicación escritorio
- Vamos crear la siguiente interfaz.
- Cargar fichero XML.
1 2 3 4 5 6 7 8 9 | private void btCargar_Click( object sender, EventArgs e) { openFileDialog1.Filter = "Archivos XML | *.xml" ; openFileDialog1.Multiselect = false ; openFileDialog1.ShowDialog(); // Mostramos valor en el textbox txtRuta.Text = openFileDialog1.FileName; } |
- Llamada procedimiento almacenado (botón "Generar")
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | private void btGenerar_Click( object sender, EventArgs e) { if (openFileDialog1.FileName.Trim() != "" ) { // Objeto deconexión OracleConnection conn = new OracleConnection(); try { conn.ConnectionString = "TuCadenaConexiónBD" ; String procedimiento = "MIESQUEMA.PG_XML.PR_XML_TO_TABLE" ; OracleCommand command = new OracleCommand(); command.Connection = conn; command.CommandText = procedimiento; command.CommandType = CommandType.StoredProcedure; // Parametro XML XmlDocument xmlDoc = new XmlDocument(); string ruta = openFileDialog1.FileName; xmlDoc.Load(ruta); string xml = xmlDoc.OuterXml; OracleParameter param1 = new OracleParameter(); param1.OracleType = OracleType.Clob; param1.Direction = ParameterDirection.Input; param1.ParameterName = "pXmlContent" ; param1.Value = xml; command.Parameters.Add(param1); // Parametros Salida Resultado OracleParameter param2 = new OracleParameter(); param2.OracleType = OracleType.VarChar; param2.Size = 500; param2.Direction = ParameterDirection.InputOutput; param2.ParameterName = "pResultado" ; param2.Value = "" ; command.Parameters.Add(param2); conn.Open(); int exito = command.ExecuteNonQuery(); // Todo bien if (exito == 1) { MessageBox.Show( "Resultado: " + command.Parameters[ "pResultado" ].Value.ToString()); } } catch (Exception ex) { MessageBox.Show( "ERROR: " + ex.Message.ToString()); } finally { // Cerramos Conexión conn.Close(); } } else { MessageBox.Show( "No se ha seleccionado ningun fichero." ); } } |
Paso 2:
Procedimiento para inserción del XML
- Para ello hemos creado dentro de nuestra base de datos el paquete "PG_XML" y el procedimiento "PR_XML_TO_TABLE". Este procedimiento insertara el XML en la tabla “XML_TABLE”.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | CREATE OR REPLACE PACKAGE BODY MIESQUEMA. "PG_XML" AS PROCEDURE PR_XML_TO_TABLE( pXmlContent IN CLOB, pResultado OUT VARCHAR2 ) IS BEGIN INSERT INTO XML_TABLE VALUES (SYSDATE, 9999, XMLTYPE(pXmlContent)); pResultado := 'OK' ; EXCEPTION WHEN OTHERS THEN ROLLBACK ; pResultado := 'ERROR EN PG_XML.PR_XML_TO_TABLE: ' || SQLERRM; END PR_XML_TO_TABLE; END PG_XML; / |
Paso 3: Creación XML
1 2 3 4 5 6 7 | < empleado > < dni >41975980Z</ dni > < nombre >Manuel</ nombre > < apellido1 >Cruz</ apellido1 > < apellido2 >Pérez</ apellido2 > < telefono >617841085</ telefono > </ empleado > |
Código fuente: aqui
No hay comentarios:
Publicar un comentario