Home

desarrollo - Biblioteca UNET

image

Contents

1. C A 5 localhost81 tesis index ohp Analisis Completo Figura 24 Resultado de la sentencia Update Fuente Elaboraci n Propia e Delete En la elaboraci n de la sentencia Delete se realiz el mismo procedimiento se incluyen las reglas de la gramatica que evaluaran la estructura para este tipo de sentencia a continuaci n se representan los diagramas dml deletestm eae Hro ete Hf wre Tabla 4 Diagrama de Conway para sentencia UPDATE Elaboracion Propia La figura 25 corresponde a las reglas de la sentencia Delete input sqllist input sqllist SEMIC sqllist sqllist SEMIC sql sqllist sql sql dml dml deletestm deletestm DELETE FROM table where table NAME PUNTO NAME table NAME where WHERE condition where condition condition OR condition condition condition AND condition condition LPAREN condition RPAREN condition accion accion comparacion comparacion scalar exp EQUAL scalar exp comparacion scalar exp COMPARISON scalar_exp scalar exp scalar exp PLUS scalar exp scalar exp scalar exp MINUS scalar exp scalar exp scalar exp STAR scalar exp scalar exp scalar exp SLASH scalar exp scalar exp column ref AS NAME scalar exp column ref NAME scalar exp column ref scalar exp atom column ref NAME PUNTO NAME PUNTO NAME column ref NAME PUNTO NAME column ref NAME
2. atom commalist atom commalist COMMA atom atom commalist atom atom literal literal CHARVAL literal INTNUM Figura 25 Gram tica libre de contexto Delete Elaboraci n Propia Para realizar la comprobaci n de la estructura de la sentencia se aplic la siguiente prueba DELETE FROM tabla WHERE campo3 4 DELETE FROM tabla Figura 26 Ejemplos de la sentencia Update Elaboraci n Propia El resultado sint cticamente obtenido es correcto a continuaci n se ilustra en la figura 27 C A 0 localhost 81 tesis index php Analisis Completo Figura 27 Resultado de la sentencia Delete Fuente Elaboraci n Propia A continuaci n se muestra la ejecuci n de las principales consultas de Sql para el lenguaje de definici n de datos ddl por medio de diagramas de conway e Create y Drop sqllist sallist sallist sallist tablestm table campos column def tipo dato def list constraint ete PO Tabla 5 Diagrama de Conway para sentencias DDL Elaboracion Propia A continuacion se muestra la figura 28 input sqllist input sqllist SEMIC sqllist sqllist SEMIC sql sqllist sql sql dml sql ddl ddl bdstm ddl tablestm bdstm CREATE DATABASE NAME bdstm DROP DATABASE NAME tablestm CREATE TABLE table LPAREN table campos RPAREN tablestm DROP TABLE table table campos table campos
3. 1 const YY NOT ACCEPT 0 const YY START 1 const YY END 2 const YY NO ANCHOR 4 const YY BOL 128 var YY EOF 129 function _construct stream parent construct stream this gt yy_lexical_ state self Y Y INITIAL j const YYINITIAL 0 static yy state dtrans array 0 static yy_acpt array 0 self YY NOT ACCEPT 1 self YY NO ANCHOR 2 self YY NO ANCHOR 3 self YY NO ANCHOR Figura 10 Archivo generado del analizador l xico Elaboraci n propia Luego de elaborar el archivo y colocar en funcionamiento la prueba de creaci n del lenguaje l xico se debe hacer uso del siguiente c digo php ya que este tiene la labor de desempe arse como una funci n principal E include UnetLexer php Sscanner new PHPlexer fopen prueba txt r while t Sscanner gt yylex echo lt br gt print_r t echo Nombre del Token gt scanner gt yy_token_name t gt type Despu s se procede a crear el c digo correspondiente que ejecutar los diferentes testigos mediante un archivo de texto en el que se guardan las palabras que componen las sentencias sql propuestas para este proyecto 3 prueba txt Bloc de notas ol m Archivo Edici n Formato Ver Ayuda CREATE DATABASE TABLE DROP INSERT INTO UPDATE SET SELECT FROM WHERE CHARACTER INTEGER OR AND AS VALUES DEFAULT AUTO_INCREMENT gt lt lt gt lt texto n
4. table NAME assigment commalist assigment commalist COMMA assigment assigment commalist assigment assigment column EQUAL scalar exp assigment NULL column NAME scalar exp scalar exp PLUS scalar exp scalar exp scalar exp MINUS scalar exp scalar exp scalar exp STAR scalar exp scalar exp scalar exp SLASH scalar exp scalar exp column ref AS NAME scalar exp column ref NAME scalar exp column ref scalar exp atom column_ref NAME PUNTO NAME PUNTO NAME column_ref NAME PUNTO NAME column ref NAME atom literal literal CHARVAL literal INTNUM where WHERE condition where condition condition OR condition condition condition AND condition condition LPAREN condition RPAREN condition accion accion comparacion comparacion scalar exp EQUAL scalar exp comparacion scalar exp COMPARISON scalar exp atom commalist atom commalist COMMA atom atom commalist atom Figura 22 Reglas de produccion de la sentencia Update Elaboracion Propia La prueba que se realiz para la comprobaci n de las reglas es la siguiente UPDATE tabla SET campo 1 campo2 2 WHERE campo3 4 UPDATE tabla SET estatus 1 Figura 23 Ejemplos de la sentencia Update Elaboraci n Propia A continuaci n se muestra en la figura 24 el resultado exitoso obtenido con la ejecuci n de las sentencias Update
5. completo y finalmente la precedencia de algunos s mbolos usados para la ejecuci n de las sentencias sql Esta estructura del archivo junto con las reglas de producci n se usaran para la ejecuci n de todas las sentencias sql empezando por las consultas de selecci n select Insert Update y finalizando con la consulta de eliminaci n delete que ser n evaluadas de forma unitaria Ver a continuaci n la estructura del archivo name PHPParser token prefix TK _ token type int include syntax error if yymajor 0 message Unexpected End throw new Exception message return false j parse accept echo lt br gt lt div style padding 8px margin top lem background color green color white lt strong gt Analisis Completo lt strong gt lt div gt return true j left OR left AND left NOT left EQUAL COMPARISON left PLUS MINUS left STAR SLASH Figura 15 Inclusi n de archivos con precedencias Elaboraci n Propia Una vez creada la parte inicial del archivo se proceden a elaborar las reglas de producci n para la ejecuci n de las diferentes sentencias en el que se evaluar la estructura que compone la regla Para ofrecer un mejor entendimiento de la creaci n de las reglas se ilustraran los distintos diagramas de conway correspondientes a cada consulta A continuaci n se muestran las sentencias de ejecuci n de las principales consultas de Sql para el lengu
6. database php Sdb new Database ROOT DATABASE Las sentencias a ejecutar retornan true o false con excepci n del SELECT que retorna un ResultSet DELETE y UPDATE que retornan numero de filas afectadas if db gt ejecutar CREATE DATABASE prueba true echo lt br gt BD creada con exito gt El resultado es la creaci n de la base de datos el cual es una carpeta con el nombre que en este caso seria prueba se ver en la figura 38 Nombre j Fecha de modifica Tipo Tama o de prueba 01 10 2012 09 18 Carpeta de archivos Figura 38 Resultado de creaci n base de datos Fuente Elaboraci n Propia Luego de haber creado la base de datos con el nombre de prueba el siguiente paso es la creaci n de la tabla por medio de la sentencia CREATE TABLE la tabla estar representada por un archivo de texto la cual ser encontrada dentro de la carpeta prueba a continuaci n se muestra el c digo lt php include_once database php Sdb new Database prueba Nombre de la BD a usar if db gt ejecutar CREATE TABLE tabla campol INTEGER NOT NULL AUTO_INCREMENT campo2 CHARACTER DEFAULT 1 campo3 INTEGER true echo lt br gt Tabla creada con xito gt Como se menciono anteriormente la tabla creada en un archivo de texto Nombre Fecha de modifica Tipo Tamano tabla bd 01 10 2012 09 22 Documento de tex 1 KB Figura 39 Resultado de creaci n de la tabla Fuente El
7. xicas tal como se muestra en la figura 7 you lex Bloc de notas Lo Archivo Edici n Formato Ver Ayuda lt php include jlex php 96 class PHPLexer D 0 9 L a zA Z espacio t nuevalinea n n r r n 96 lt YYINITIAL gt SELECT return this gt createToken PHPParser TK_SELECT lt YYINITIAL gt FROM return this gt createToken PHPParser TK_FROM lt YYINITIAL gt WHERE return this gt createToken PHPParser TK WHERE 4 mW L nea 15 columna 1 Figura 7 Inclusi n de reglas l xicas al archivo Fuente Elaboraci n Propia En este segmento del archivo se introducen las palabras b sicas para la conformaci n de la sentencia Select en el que a n no se obtiene un resultado satisfactorio ya que falta la inclusi n de la regla l xica correspondiente a un y otras requeridas para la funcionalidad de la consulta En la figura 8 se muestra la incorporaci n de todas las palabras necesarias para la evaluaci n de las sentencias SQL tales como Select Insert Update Delete Create Where entre otros lt php include lex php Yo Yo class PHPLexer D 0 9 L a zA Z espacio t nuevalinea n n r r n A lt YYINITIAL gt SELECT return this gt createToken PHPParser TK_SELECT lt YYINITIAL gt FROM return this gt createToken PHPParser TK FROM lt YYINITIAL gt WHERE return this gt createToken P
8. COMMA campos table campos campos campos column def column def column tipo dato def list tipo dato CHARACTER tipo dato INTEGER def list def list constraint def list constraint NOT NULL constraint NOT NULL AUTO INCREMENT constraint DEFAULT literal constraint DEFAULT NULL column NAME table NAME PUNTO NAME table NAME literal CHARVAL literal INTNUM Figura 28 Reglas de producci n de las sentencias DDL Elaboraci n Propia El caso de prueba realizado para este conjunto de reglas es CREATE DATABASE prueba CREATE TABLE table campol INTEGER NOT NULL AUTO INCREMENT campo2 CHARACTER DEFAULT 1 DROP TABLE table DROP DATABSE prueba Figura 29 Ejemplo para la sentencias CREATE y DROP Elaboraci n Propia Y el resultado obtenido en la ejecuci n de la sentencia Sql para crear y eliminar es exitoso como se ilustra en la figura 30 C A D localhost81 tesis index php Analisis Completo Figura 30 Resultado de la sentencia DDL Fuente Elaboraci n Propia Una vez finalizado la creaci n del analizador sint ctico se procede a comprobar por medio del analizador sem ntico que las bases de datos tablas y campos existan en la misma A continuaci n se muestran unos casos de prueba que son verificados por las clases database php el cual se encarga de constatar que la base de datos y tablas hayan sido creadas y la clase resulset ph
9. Sdb new Database prueba Sthis gt assertTrue db gt ejecutar DROP TABLE tabla function testEjecutarDropdatabase 1 Sdb new Database ROOT DATABASE Sthis gt assertTrue db gt ejecutar DROP DATABASE prueba Di El resultado obtenido durante las pruebas realizadas a la clase Database se dieron de manera exitosa donde se realiz6 una sola ejecuci6n para las diferentes funciones requeridas en el manejo de datos a continuaci n se muestra en la figura 34 lo que se obtuvo con la aplicaci n simpletest database test php 1 1 test cases complete 8 passes 0 fails and 0 exceptions Figura 34 Resultado de la clase database Fuente Elaboraci n Propia e La segunda prueba se realizar a la clase Interprete la cual esta constituida de la siguiente manera lt require_once simpletest autorun php require_once util php require_once StringParser php class TestOfStringParser extends UnitTestCase function Construct 1 parent _ construct Test stringparser function teststringparser Ssp new StringParser SELECT FROM tabla 7 SBLECT 1 eae 2 FROM 3 tabla 4 Sthis gt assertTrue count sp gt actual 4 j function testparsequeryselect Ssp new StringParser SELECT FROM tabla Sretorno sp gt parsequery Sthis gt assertTrue strcmp retorno gt type SELECT 0 j function testparsequeryinsert Ssp new StringParser INSERT
10. where WHERE condition where condition condition OR condition condition condition AND condition condition LPAREN condition RPAREN condition accion accion comparacion comparacion scalar exp EQUAL scalar exp comparacion scalar exp COMPARISON scalar_exp atom commalist atom commalist COMMA atom atom commalist atom Figura 16 Reglas de producci n de la sentencia Select Elaboraci n Propia Para obtener la ejecuci n de los distintos casos de prueba se debe hacer uso del siguiente c digo elaborado en el lenguaje php donde se incluye el archivo generado por el analizador l xico llamado UnetLexer php y el archivo creado por el analizador sint ctico Para generar el analizador sint ctico es necesario utilizar el siguiente comando lemon LPHP you y obteniendo de esta forma el parser llam ndose al archivo UnetParser php Este c digo ser aplicado a todas las pruebas para la obtenci n de los resultados xT include UnetParser php include UnetLexer php Sparser new PHPParser Sscanner new PHPlexer fopen prueba txt r while St Sscanner gt yylex Sparser gt doParse t gt type t j parser gt doParse 0 T gt Para evaluar el funcionamiento del archivo creado con las reglas de producci n para la sentencia select se har n uso de los diferentes tipos de selects que se muestran a continuaci n SELECT FROM tabla SELECT FROM
11. CAPITULO IV Desarrollo de la Libreria PHP Una vez dise ada la biblioteca al analizar las partes requeridas para su elaboraci n se observa la necesidad de construir un int rprete puro que se encarga de analizar y ejecutar sentencia a sentencia 21 y el mismo va a estar compuesto por un analizador l xico que constituye la primera fase el cual lee el programa fuente de izquierda a derecha y se agrupa en componentes l xicos testigos que son secuencias de caracteres que tienen un significado 22 un analizador sint ctico que verifica en forma permanente la correcta escritura de las sentencias teniendo como par metro un conjunto de reglas denominada gramatica y un analizador sem ntico que se encarga de clasificar las palabras seg n su significado 23 adem s de un conjunto de clases y funciones que tomaran las sentencias ya evaluadas por el int rprete para obtener como resultado la ejecuci n de las sentencias a trav s de una librer a 24 En el desarrollo de la biblioteca es necesario usar herramientas que sean de ayuda para la elaboraci n de p ginas web por tal motivo fue seleccionado el lenguaje de programaci n Php la misma se lleva a cabo mediante una serie de ciclos o pasos que est n definidos por pruebas y resultados obtenidos en el desarrollo de la metodolog a Test Driven Development TDD Ciclo de desarrollo de TDD Elegir Requisito Posterior a lo analizado para la creaci n de la biblioteca se ha est
12. HPParser TK_WHERE lt YYINITIAL gt Gen return this gt createToken PHPParser TK_ COMPARISON lt YYINITIAL gt OR return this gt createToken PHPParser TK OR lt YYINITIAL gt AND return this gt create Token PHPParser TK AND lt YYINITIAL gt INSERT return this gt createToken PHPParser TK_INSERT lt YYINITIAL gt INTO return Sthis gt createToken PHPParser TK_ INTO lt YYINITIAL gt VALUES return this gt createToken PHPParser TK_VALUES lt YYINITIAL gt UPDATE return this gt createToken PHPParser TK_UPDATE lt YYINITIAL gt SET return this gt createToken PHPParser TK SET lt YYINITIAL gt DELETE return Sthis gt createToken PHPParser TK DELETE lt YYINITIAL gt CREATE return this gt createToken PHPParser TK_CREATE lt YYINITIAL gt DROP return Sthis gt createToken PHPParser TK DROP lt YYINITIAL gt DATABASE return this gt createToken PHPParser TK_DATABASE YYINITIAL TABLE return this gt createToken PHPParser TK_TABLE lt YYINITIAL gt DEFAULT return this gt createToken PHPParser TK DEFAULT lt YYINITIAL gt INTEGER return this gt createToken PHPParser TK_ INTEGER lt YYINITIAL gt CHARACTER return this gt createToken PHPParser TK_ CHARACTER lt YYINITIAL gt NULL return Sthis gt createToken PHPParser TK NULL lt YYINITIAL gt AUTO INCREMENT return this gt createToken PHPP
13. INTO tabla campol campo2 VALUES 1 2 Sretorno S sp gt parsequery Sthis gt assertTrue strcmp retorno gt type INSERT 0 j function testparsequeryinsertcampos Ssp new StringParser INSERT INTO tabla campol campo2 VALUES 1 2 Sretorno sp gt parsequery Sthis gt assertTrue in_array campol Sretorno gt colNames Sthis gt assertTrue in_array campo2 Sretorno gt colNames j function testparsequeryupdate Ssp new StringParser UPDATE tabla SET campol 2 WHERE campo2 1 Sretorno Ssp gt parsequery Sthis gt assertTrue strcmp retorno gt type UPDATE 0 j function testparsequerydelete Ssp new StringParser DELETE FROM tabla WHERE campo2 1 S retorno sp gt parsequery Sthis gt assertTrue strcmp retorno gt type DELETE 0 j gt Posterior a dicha prueba se obtuvo un resultado satisfactorio la cual se ilustra en la figura 35 stringparser test php 1 1 test cases complete 7 passes 0 fails and 0 exceptions Figura 35 Resultado de la clase interprete Fuente Elaboraci n Propia e Para llevar a cabo la tercera prueba resultset es necesario hacer uso del archivo que se muestra en la figura 36 campol campo2 campo3 campo4 auto increment character characterf finteger 1 lfifaf4 2 1 b 4 31044 4 1 d 3 S ite 4 6f1tg44 7 1 x 10 8 1 p 54 Figura 36 Archivo de ejemplo Fuente Elaboraci n Prop
14. a en vectores los nombres de columnas tablas valores entre otros Expression php se encarga de analizar la sentencia where y resultSet php guarda en los vectores los datos le dos o insertados en el archivo de texto Fueron creados tambi n los archivos config php que permite la configuraci n de las rutas donde se localizan los archivos que pertenecen a las base de datos adem s se establecen una serie de palabras claves que se usan dentro del c digo y database php se encarga de realizar la interacci n con el c digo del usuario adem s las consultas luego de ser evaluados por los analizadores son tomadas por la clase en donde dichos archivos en conjunto interpretan y ejecutan las sentencias Sql en archivos de texto En el desarrollo de cualquier sistema o aplicaci n para hacer uso de la biblioteca se debe hacer referencia a la clase database a trav s de la cl usula include donde luego se crear una instancia del mismo enviando como par metro el nombre de la base de datos a usar Una vez realizado este proceso se podr n ejecutar las sentencias requeridas en el cual el int rprete se encargara de validar las expresiones establecidas por el usuario El probador simpletest es una herramienta que sirve para realizar pruebas unitarias las cuales permitir n verificar el funcionamiento de las clases o m todos realizados En la validaci n de cada uno de ellos se espera obtener dos posibles respuestas exitosa O fallida de ac
15. a where campol datol AND campo2 dato2 Una vez identificado el requisito y realizado una breve explicacion se procede a crear el archivo del analizador l xico donde se introducen los testigos o cadenas entre los cuales est n CREATE SELECT FROM INSERT UPDATE DELETE AND entre otros que son necesarios en la construcci n de las sentencias SQL para el posterior uso de la biblioteca a continuaci n se muestran los pasos necesarios para la elaboraci n del archivo del analizador l xico comenzando con el archivo vac o hasta completar las especificaciones l xicas necesarias para crear el mismo e Inicialmente se procede a crear el archivo you lex en este archivo ser n introducidos todos los testigos o cadenas que se necesiten para la construcci n de la biblioteca youJex Bloc de notas e e ee a b Archivo Edici n Formato Ver Ayuda Figura 3 Archivo l xico vac o Fuente Elaboraci n Propia El resultado obtenido en la creaci n del archivo es fallido ya que al ejecutarse se obtendr como consecuencia una salida vac a por lo que no se han introducido la serie de caracteres necesarios para el funcionamiento del analizador Ver figura 4 C A D localhost81 tesisfindex ph Error Archivo vacio Figura 4 Salida fallida del archivo l xico vacio Fuente Elaboraci n Propia e Luego en el archivo se realiza un include de jlex php y la clase PHPLexer que son requeridas para evaluar la funcionalidad del ar
16. ablecido una serie de m dulos para la construcci n de la misma los cuales se encuentran definidos en la figura l Modulo de Acceso a Che J Usuarios i l Usuario Modulo de Conexion de las Sentencias SQI Modulo de Creacion de Sentencias SQL Figura Diagrama de componentes de la biblioteca Elaboraci n Propia Una vez definidos los requisitos generales m dulo de acceso a usuarios m dulo de conexi n de las sentencias sql y m dulo de creaci n de creaci n de sentencias sql se debe elegir un requisito espec fico que es en este caso es M dulo de Creaci n de Sentencias SQL donde se desarrolla un int rprete en el que es indispensable construir un analizador l xico el analizador sint ctico y un analizador sem ntico como se muestra en la figura 2 Analizador Semantico Analizador lexico a gt es sintactico genombre token Analizador lexico 7 parser yylex doparse Analizador L xico Figura 2 Diagrama de Clases Elaboracion Propia gt amp colnames Sptablename database resulset El analizador l xico se encarga de leer un flujo de caracteres de entrada y transformarlo en una secuencia de componentes l xicos llamados testigos que son utilizados luego por el analizador sint ctico Se ocupa de ciertas labores de limpieza entre e
17. aboraci n Propia Despu s de haber creado la tabla dentro de la misma insertamos los registros por medio de la sentencia INSERT INTO ver c digo a continuaci n lt php include_once database php Sdb new Database prueba Nombre de la BD a usar for i 0 1 lt 3 1 if Sdb gt ejecutar INSERT INTO tabla campo3 VALUES i true Sid Sdb gt getLastInsertId Retorna Ultimo Id insertado echo lt br gt Insertado registro con id id Z Se obtiene como resultado la inserci n del nombre de los campos los tipos de datos y el valor que se asign6 por medio del ciclo realizado campolfcampo2 campo3 auto increment character finteger 1 1 1 0 24141 3 1 2 Figura 40 Resultado de insercion en la tabla Fuente Elaboracion Propia Luego se podra seleccionar los datos por medio de la sentencia sql SELECT lt 7pAp include_once database php Sdb new Database prueba Nombre de la BD a usar Sdb gt ejecutar SELECT FROM tabla true while db next record i echo lt br gt FILA fdb f G Sdb gt f 1 fdb gt E 2 De esta manera los registros seleccionados durante la ejecuci n del select son todos los datos almacenados como se ilustra a continuaci n FILA gt 1 1 0 FILA gt 2 1 1 FILA 3 1 2 Se podr realizar la eliminaci n de un registro que se encuentre dentro de la tabla por medio de la sentencia DELETE el siguiente c digo muestra c mo real
18. aje de manipulaci n de datos dml eSelect selection scalar exp commalist ki scalar exp column ref i e table_commalist table ref range variable where o a HPA omeo comparacion scalar_exp scalar_exp Tabla 1 Diagrama de Conway para sentencia SELECT Elaboraci n Propia El archivo proporcionado es input sqllist input sqllist SEMIC sqllist sqllist SEMIC sql sqllist sql sql dml dml selectstm selectstm query spec query spec SELECT selection table_exp selection scalar exp commalist selection STAR scalar exp commalist scalar exp commalist COMMA scalar exp scalar exp commalist scalar exp scalar exp scalar exp PLUS scalar exp scalar exp scalar exp MINUS scalar exp scalar exp scalar exp STAR scalar exp scalar exp scalar exp SLASH scalar exp scalar exp column_ref AS NAME scalar exp column ref NAME scalar exp column ref scalar exp atom column ref NAME PUNTO NAME PUNTO NAME column ref NAME PUNTO NAME column ref NAME atom literal literal CHARVAL literal INTNUM table exp from where from FROM table commalist table commalist table commalist COMMA table ref table commalist table ref table ref table range variable table ref table table NAME PUNTO NAME table NAME range variable NAME
19. arser TK_ AUTO INCREMENT lt YYINITIAL gt AS return this gt createToken PHPParser TK_AS Figura 8 Inclusi n de testigos al archivo l xico Elaboraci n propia e Una vez ingresadas todos las frases requeridas para realizar las consultas se integran los operadores comparativos que son utilizados por las sentencias SQL para el buen funcionamiento de la misma lt php include lex php Yo Yo class PHPLexer D 0 9 L a zA Z espacio t nuevalinea n n r r n lt Y YINITIAL gt SELECT 4 return this gt createToken PHPParser TK SELECT lt Y YINITIAL gt FROM return this gt createToken PHPParser TK_FROM j lt YYINITIAL gt WHERE return this gt createToken PHPParser TK_WHERE lt YYINITIAL gt lt gt lt 5 lt S _ return this gt createToken PHPParser TK_ COMPARISON lt YYINITIAL gt OR return this gt createToken PHPParser TK_OR lt YYINITIAL gt AND return this gt createToken PHPParser TK_ AND lt YYINITIAL gt INSERT return this gt createToken PHPParser TK_INSERT YYINITIAL INTO return this gt createToken PHPParser TK_INTO lt YYINITIAL gt VALUES return this gt createToken PHPParser TK_ VALUES lt YYINITIAL gt UPDATE return this gt createToken PHPParser TK_UPDATE YYINITIAL SET return Sthis gt createToken PHPParser TK_SET lt YYINITIAL gt DELETE return Sthis gt createTo
20. ases de datos creadas y en el centro de la pantalla se puede observar donde se introduce el nombre con el cual el usuario quiere crear su base de datos C fi localhost 81 tesis biblioteca php web principal php Crear Base de Datos Figura 44 Crear base de datos Fuente Elaboraci n Propia e Una vez creada la base de datos se crea la tabla donde se escribe el nombre y los campos como se muestra en la figura 45 j pD Web x a k Mm gt CG A OD localhost 81 tesis biblioteca_php web principal php show database_details amp db tesisp y nombre opciones registros esis join Ver Insertar Propiedades Eliminar 8 join prueba Ver Insertar Propiedades Eliminar 8 Join prueba Comando SQL en BD tesisp Crear nueva tabla en tesisp Nombre Campos Crear e Eliminar BO tesisp Figura 45 Crear tabla con nombre y campos Fuente Elaboraci n Propia e Despu s de ingresar el nombre y los campos de la base de datos se procede a identificar cada campo colocando el nombre y el tipo de dato a utilizar ave E Le 10 e gt C 4 N localhost81 tesis biblioteca_php web principal php show table_create amp db tesisp K KI nueva a L otra Tabla diente en tesisp ou campa Epa SELECCIONE y SELECCIONE a Figura 46 Ingresar nombre y tipo de dato Fuente Elaboraci n Propia e En la siguiente imagen se puede observar lo
21. bject value gt type gt 4 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt EQUAL JLexToken Object value gt type gt 17 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt COMMA JLexToken Object value gt type gt 40 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt PUNTO JLexToken Object value gt texto type gt 32 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt CHARVAL JLexToken Object value gt nombre type gt 12 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt NAME Figura 12 Resultado de los testigos del l xico Fuente Elaboraci n propia Una vez realizado el requisito de la construcci n del analizador l xico el siguiente paso es la elaboraci n del analizador sint ctico ya que este toma los testigos que le env a el analizador l xico y comprueba que los testigos pueden formar alguna sentencia valida del lenguaje Para evaluar la sintaxis del lenguaje de programaci n habitualmente se describe por gram ticas libres de contexto utilizando para ello un tipo de notaci n como por ejemplo notaci n BNF donde se representan reglas de escritura o producciones La gram tica o sintaxis determinan las cadenas de s mbolos correctos o sentencias para formar el lenguaje De esta manera la creaci n del analizador sint ctico es im
22. chivo como se muestra en la figura 5 Ad 3 you lex Bloc de notas Archivo Edici n Formato Ver Ayuda lt php include jlex php s Xclass PHPLexer SS Figura 5 Archivo l xico inicial Fuente Elaboraci n Propia e Enel siguiente paso se introducen los n meros caracteres espacios y saltos de l neas dentro del doble porcentaje que es donde se incluyen las directivas y macros que son empleados para la evaluaci n de las sentencias SQL T you lex Bloc de notas a ae Chaj HA Archivo Edici n Formato Ver Ayuda lt php include jlex php s Xclass PHPLexer D 0 9 L a zA Z espacio t nuevalinea n Wir Nen Xx Linea 11 colu Figura 6 Inclusion de directivas al archivo l xico Fuente Elaboracion Propia Debido a que no se han implementado las reglas l xicas en la resoluci n del archivo el resultado adquirido hasta este momento es err neo Para brindar una mejor informaci n de los testigos requeridos para la creaci n del analizador l xico ser n definidos a continuaci n Select From Where Or And In Insert Into Values Update Set Delete Create Drop Database Tabla Integer Float Character Null Auto Incremente espacio entre otros Asimismo despu s de haberse identificado los testigos requeridos para la evaluaci n de las sentencias SQL para este proyecto se van incorporando de manera progresiva las reglas l
23. e gt 1 col gt 0 filename gt prueba txt Nombre del Token gt SET JLexToken Object value gt SELECT type gt 41 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt SELECT JLexToken Object value gt FROM type gt 38 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt FROM JLexToken Object value gt WHERE type gt 42 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt WHERE JLexToken Object value gt type gt line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt STAR JLexToken Object value gt type gt 6 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt PLUS JLexToken Object value gt type gt 7 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt MINUS JLexToken Object value gt type gt 9 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt SLASH JLexToken Object value gt CHARACTER type gt 18 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt CHARACTER JLexToken Object value gt INTEGER type gt 20 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt INTEGER JLexToken Object value gt OR type gt 1 line gt 1 col gt 0 filename gt prueba txt Nombre del Toke
24. equisitos y el siguiente en desarrollarse es el m dulo de conexi n de las sentencias M dulo de Conexi n de las Sentencias SOL Este m dulo necesitar de la elaboraci n de clases y funciones mediante el lenguaje pre procesado de hipertexto PHP las cuales unidas con los archivos generados como son Unetlexer Php analizador l xico y Unetparser php analizador sint ctico podr n verificar la funcionalidad de la biblioteca a trav s de sentencias Sql Se realiz una b squeda en la red inform tica mundial world wide web en la cual se encontraron c digos desarrollados en lenguaje PHP que permit an la manipulaci n de datos a trav s de archivos los mismos fueron adaptados para permitir la funcionalidad adecuada seg n la investigaci n propuesta A continuaci n se enumeran los archivos implementados e Util php e Stringparser php e Sqlquery php e Expression php e resulSet php e config php e database php En el archivo Util php se encuentran las funciones que otras clases requieren para realizar los procesos repetitivos El segundo archivo Stringparser php se encarga de convertir la consulta en un vector manipulable para luego analizar y ejecutar la consulta en los archivos correspondientes creando objetos del tipo sqlquery para maneyar las sentencias en forma de objetos El archivo sqlquery php es una clase que tiene los atributos que corresponden a la estructura de una consulta que facilitar su manejo ya que separ
25. ficaci6n del campo2 igual a cero se muestra en la figura 42 kampolfcampo2 campo3 auto increment character integer F1 2 0 1 3 1 2 Figura 42 Resultado de la modificaci n en la tabla Fuente Elaboraci n Propia Se ilustra otro ejemplo de la sentencia select con su resultado Pap include_once database php Sdb new Database prueba Nombre de la BD a usar Sdb gt ejecutar SELECT campol campo2 FROM tabla WHERE campol 2 true while S db gt next_record echo lt br gt FILA lt gt SdB gt F 0 e0db Si ecampoZz gt FILA gt 2 0 Como se puede observar con el uso de los archivos realizados en php junto con la elaboraci n de las sentencias sencillas de sql como creaci n inserci n modificaci n y eliminaci n se constat el buen funcionamiento de la biblioteca php mediante la gesti n de archivos de texto Ya finalizada la construccion de las distintas clases con sus funciones actualizamos la lista teniendo como requisito el m dulo de acceso a usuario en el cual se realizar una peque a aplicaci n M dulo de Acceso a Usuario La finalidad de elaborar la biblioteca php es la de mejorar los tiempos de respuestas adem s de ofrecer a los usuarios facilidad sencillez al momento de uso del mismo modo la biblioteca tiene como prop sito el de imitar un motor de almacenamiento permitiendo realizar la b squeda de registros de manera eficaz El programador al momento de hacer u
26. gt createToken PHPParser TK_ COMMA lt YYINITIAL gt return this gt createToken PHPParser TK COLON lt YYINITIAL gt return this gt createToken PHPParser TK PUNTO lt YYINITIAL gt return this gt create Token PHPParser TK SEMIC lt YYINITIAL gt 4 return this gt createToken PHPParser TK PLUS lt YYINITIAL gt return this gt createToken PHPParser TK_MINUS YYINITIAL return Sthis gt createToken PHPParser TK_STAR j lt YYINITIAL gt return this gt createToken PHPParser TK_ SLASH lt YYINITIAL gt return this gt createToken PHPParser TK_ EQUAL lt YYINITIAL gt t v n fir lt YYINITIAL gt nuevalinea lt YYINITIAL gt espacio Figura 9 Archivo final del analizador l xico Elaboraci n propia Luego de haber ingresado las reglas l xicas necesarias para el buen funcionamiento del archivo se obtiene un resultado satisfactorio y para comprobarlo se genera una clase que va hacer usada durante la ejecuci n de las sentencias dicha clase estar implementada en Php la cual fue creada con el nombre de UnetLexer php a trav s del comando Java cp JlexPhp Main you lex que se ejecuta por medio de la consola al no generar ning n error procede a generar el archivo que se muestra en la figura 10 lt php include lex php class PHPLexer extends JLexBase const YY BUFFER SIZE 512 const YY F 1 const YY NO STATE
27. ia lt require_once simpletest autorun php require_once database php class TestOfResultSet extends UnitTestCase Function eonstruct 1 parent __construct Test resultset j function testresulset Sdb new Database tesisp Srs Sdb gt readTable prueba Devuelve objeto ResultSet Srow Srs gt rows 0 Sthis gt assertTrue row instanceof Row this gt assertTrue count rs gt colNames 4 Existen 4 campos en el archivo Sthis gt assertTrue rs gt getRowCount 8 Existen 8 registros en el archivo Sthis gt assertTrue count Srow gt fields 4 Existen 4 campos en el row En la figura 37 se ilustra el buen resultado que se obtuvo de la ejecuci n de la aplicaci n simpletest resultset test php 1 1 test cases complete 4 passes 0 fails and 0 exceptions Figura 37 Resultado de la clase resultset Fuente Elaboraci n Propia Una vez realizada una breve explicaci n de cada clase y aplicada la prueba con la herramienta simpletest se muestran a continuaci n unos ejemplos que permitir n hacer uso de la biblioteca php ejecutando sentencias SQL para la inserci n modificaci n y eliminaci n de datos en los archivos de texto que emularan las tablas de una Base de Datos para la administraci n de archivos Para crear o eliminar la base de datos es necesario usar la instancia de ROOT DATABASE como se puede observar en el siguiente c digo lt php include_once
28. inaci n de la tabla Fuente Elaboraci n Propia
29. izar la ejecuci n de la sentencia lt php include_once database php Sdb new Database prueba Nombre de la BD a usar if Sret Sdb gt ejecutar DELETE FROM tabla WHERE campol 1 true 0 echo lt br gt Sret Filas eliminadas io Observemos que se ha eliminado el registro correspondiente a la fila 1 que una variable incremental como se asign en la sentencia delete kampolfcampo2 campo3 auto incrementicharacter f integer 15 2 1 1 3 1 2 Figura 41 Resultado de eliminaci n en la tabla Fuente Elaboraci n Propia Otro ejemplo de la sentencia Select luego de eliminar el registro de campol a continuaci n ver c digo con su resultado pp include once database php Sdb new Database prueba Nombre de la BD a usar Sdb gt ejecutar SELECT campol campo2 FROM tabla true while S db gt next_record echo lt br gt FILA lt gt Adb gt E 0 lt T Adb gt tE campos FILA gt 2 1 FILA gt 3 1 Tambi n se podr hacer uso de la sentencia Update donde se pueden modificar registros como se muestra en esta parte de c digo cambiando el valor del campo2 a cero con la condici n de que el campol sea igual a 2 lt php include_once database php Sdb new Database prueba Nombre de la BD a usar 1f ret db gt ejecutar UPDATE tabla SET campo2 0 WHERE campol 2 true 0 echo br gt ret Filas actualizadas 2 El resultado de la modi
30. ken PHPParser TK DELETE lt YYINITIAL gt CREATE return this gt createToken PHPParser TK_ CREATE lt YYINITIAL gt DROP return this gt createToken PHPParser TK_DROP lt YYINITIAL gt DATABASE return this gt createToken PHPParser TK DATABASE lt YYINITIAL gt TABLE return this gt create Token PHPParser TK TABLE lt YYINITIAL gt DEFAULT return this gt createToken PHPParser TK DEFAULT lt YYINITIAL gt INTEGER return this gt createToken PHPParser TK INTEGER lt YYINITIAL gt CHARACTER return this gt createToken PHPParser TK CHARACTER lt YYINITIAL gt NULL return Sthis gt createToken PHPParser TK NULL lt YYINITIAL gt AUTO INCREMENT return Sthis createToken PHPParser TK AUTO INCREMENT lt YYINITIAL gt AS return this gt createToken PHPParser TK_ AS lt YYINITIAL gt D 2 D return this gt createToken PHPParser TK FLOATNUM lt YYINITIAL gt D return this gt createToken PHPParser TK INTNUM lt YYINITIAL gt L L D return this gt createToken PHPParser TK_ NAME lt YYINITIAL gt EX AWD V return Sthis gt createToken PHPParser TK CHARVAL lt Y YINITIAL gt LASA AWDA return this gt createToken PHPParser TK_STRING lt Y YINITIAL gt return Sthis gt createToken PHPParser TK_LPAREN j lt YYINITIAL gt return Sthis gt createToken PHPParser TK_RPAREN lt YYINITIAL gt return this
31. llas eliminar los espacios en blanco o comentarios tambi n se ocupa de los problemas que puedan surgir por los distintos juegos de caracteres o si el lenguaje distingue o no las may sculas y min sculas Se hace uso de JLEXPHP ya que genera una clase php a partir del archivo l xico construido con JLEX Analizador Sint ctico El analizador sint ctico se encargara de tomar los testigos enviados por el analizador l xico y comprobar que los testigos puedan formar alguna sentencia valida del lenguaje sql Analizador Sem ntico El analizador sem ntico se encarga de comprobar que las bases de datos tablas y campos existan en la misma M dulo de Creaci n de Sentencias Escribir una Prueba Se incluir n dentro del analizador l xico todas las palabras requeridas para la construcci n de las sentencias sql A continuaci n se muestran las sentencias que son evaluadas por el analizador l xico para el funcionamiento de la biblioteca e Select from tabla e Select CONCAT nombre campo from tabla where campol datol e Select UPPER nombre campo from tabla where campol datol e Select LOWER nombre campo from tabla where campol datol e Select SUBSTR nombre campo from tabla where campol dato1 e Select from tabla where campol datol AND campo2 dato2 e Insert into table campol campo2 values datol dato2 e Update tabla set campol datol campo2 dato2 where campo3 dato3 e Delete from tabla where campol datol e Delete from tabl
32. n gt OR JLexToken Object value gt AND type gt 2 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt AND JLexToken Object value gt AS type gt 39 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt AS JLexToken Object value gt VALUES type gt 31 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt VALUES JLexToken Object value gt DEFAULT type gt 26 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt DEFAULT JLexToken Object value gt AUTO_INCREMENT type gt 23 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt AUTO_INCREMENT JLexToken Object value gt gt type gt 5 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt COMPARISON JLexToken Object value gt lt gt type gt 5 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt COMPARISON JLexToken Object value gt lt type gt 5 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt COMPARISON JLexToken Object value gt gt type gt 5 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt COMPARISON JLexToken Object value gt lt type gt 5 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt COMPARISON JLexToken O
33. ombre prueba Figura 11 Archivo de prueba del analizador l xico Fuente Elaboracion propia Los resultados logrados con la creaci n del analizador l xico se dieron de manera favorable debido a que en el mismo se ilustran los testigos requeridos para la realizaci n de las sentencias sql que ser n soportadas por la biblioteca como se puede observar en la figura 12 e C fi D localhost 81 tesis JLexToken Object value gt CREATE type gt 10 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt CREATE JLexToken Object value gt DATABASE type gt 11 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt DATABASE JLexToken Object value gt TABLE type gt 14 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt TABLE JLexToken Object value gt DROP type gt 13 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt DROP JLexToken Object value gt INSERT type gt 29 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt INSERT JLexToken Object value gt INTO type gt 30 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt INTO JLexToken Object value gt UPDATE type gt 35 line gt 1 col gt 0 filename gt prueba txt Nombre del Token gt UPDATE JLexToken Object value gt SET type gt 36 lin
34. p comprueba la existencia de columnas En las siguientes im genes se ilustra el funcionamiento del an lisis sem ntico e Base de datos no existe lt php include_once database php Sdb new Database prueba Nombre de la BD a usar 7S C A localhost 3 1 1 Fatal error Uncaught exception Exception with message No existe Base de datos prueba in C Appservwwwtesis biblioteca php database php 59 Stack trace 0 C Appserviwwwtesis indax php 35 Database gt __construct prueba 1 main thrown in C Appser wwwitesis biblioteca_php database php on line59 Figura 31 Resultado de BD no existente Fuente Elaboraci n Propia e Tabla no existe lt php include_once database php Sdb new Database prueba Nombre de la BD a usar Sdb gt ejecutar SELECT campox FROM nueva true C fi D localhost 81 tesis K ki Fatal error readTable No pudo abrir Tabla nueva Figura 32 Resultado de tabla no existente Fuente Elaboraci n Propia e Campo no existe lt php include_once database php Sdb new Database prueba Nombre de la BD a usar Sdb gt ejecutar SELECT campox FROM tabla true gt C fi D localhost 81 tesis Y ki Fatal error filterByColumnNames Columna campox no encontrada Figura 33 Resultado de campo no existente Fuente Elaboraci n Propia Ya finalizada la elaboraci n del analizador sem ntico actualizamos la lista de los r
35. portante ya que este se encarga de evaluar y verificar que las sentencias sql en la elaboracion de la biblioteca se encuentre estructurada de forma correcta y para ello se realizara una serie de pruebas donde se comprobara el funcionamiento de cada una de las sentencias propuestas en el desarrollo de esta investigacion Primeramente se elabora el archivo you y donde se van a introducir las reglas de producci n para la evaluaci n de la sintaxis correspondientes a cada sentencia sql comenzando con el archivo vac o hasta completar todas las reglas de producci n que comprobaran que las sentencias se encuentren escritas correctamente A 2 you y Bloc de notas Archivo Edici n Formato Ver Ayuda D L nea 1 columna 1 Figura 13 Archivo del analizador Sint ctico vac o Fuente Elaboraci n Propia Es importante destacar que como a n no se han introducido las reglas de producci n necesarios para la evaluaci n de la sintaxis el resultado obtenido durante la ejecuci n de las sentencias anteriormente expuestas es fallido Ver figura 14 C A localhost Error Archivo vacio Figura 14 Salida fallida del archivo sint ctico Fuente Elaboraci n Propia En la figura 15 se muestra la inclusi n de las librer as o archivos usados en la evaluaci n de la sintaxis se comprueba si se produce alg n error al momento de ejecutar la sentencia se crea una peque a funci n que muestra que el an lisis se haya realizado
36. s distintos registros encontrados en la tabla J D Web A gt C fi D localhost 81 tesis biblioteca_php web principal php show table_view amp db tesisp amp tbl prueba Y ki n va Resultado 8 total 1 queries pS SELECT FROM prueba pe campot campo2 campo3 CAMPOS opcion SE 1 a 4 editar e ONES 2 1 b 4 3 E E a a al E ES g 4 EAN E SE E 2 2 P 54 Insertar nuevo registro Figura 47 Registros de la tabla Fuente Elaboraci n Propia e Fn la figura 48 se puede observar la interfaz para introducir los valores a insertar J Web x gt CG A 10 localhost 81 tesis biblioteca_php web principal php show table_insert amp db tesisp amp tbl cliente K ki Figura 48 Insertar valor en la tabla Fuente Elaboraci n Propia e La opci n propiedades muestra los campos y tipos de datos e Comando SQL en BD tesisp e Insertar nuevo registro e Eliminar tabla cliente Figura 49 Opci n propiedades Fuente Elaboraci n Propia e En la figura 50 se muestra el mensaje de confirmaci n al momento de eliminar una tabla as mismo seria para la eliminaci n de base de datos y de registros D we A o a gt f 1 localhost 1 tesis biblioteca_php web principal php show table_delete amp db tesisp amp tbl cliente K ki nueva Esta seguro de Eliminar tabla cliente otra join prueba Figura 50 Elim
37. so de la biblioteca php debe guardar el archivo de la biblioteca dentro de la carpeta donde desarrolle su proyecto de manera que pueda extender la biblioteca y no presente inconvenientes al momento de ejecutar una sentencia Para tener una informaci n completa sobre el uso de la biblioteca debe leer el manual de usuario que se encontrar en los anexos Validaci n de la Biblioteca Para verificar o certificar el funcionamiento de la biblioteca elaborada en el lenguaje pre procesado de hipertexto PHP se realizar una peque a aplicaci n donde se comprobar la ejecuci n de las distintas sentencias sql mediante una interfaz Web donde se pueda crear base de datos posterior a dicho proceso la creaci n de tablas y una interfaz donde al seleccionar la misma permitir realizar la inserci n modificaci n y eliminaci n de datos A continuaci n se muestran los diferentes pasos a seguir por el programador para comprobar la funcionalidad de la biblioteca que fue incluida en una peque a aplicaci n elaborada en php e En la ventana de inicio de sesi n se pide el login y password con el fin de autenticar el usuario 3 Interfaz Web So CG fi D localhost81 tesis biblioteca php web Interfaz Web Login root aT Log in Figura 43 Inicio de sesi n Fuente Elaboraci n Propia e Luego del usuario haber iniciado sesi n aparece la interfaz figura 44 donde al lado izquierdo se encuentran las b
38. tabla WHERE a 1 SELECT a b c FROM tabla SELECT a b c FROM tabla WHERE a 1 SELECT c FROM tablal tabla2 WHERE a 1 AND b 2 SELECT tabla2 c FROM tablal tabla2 WHERE a 1 AND b 2 Figura 17 Ejemplos para la sentencia Select Elaboraci n Propia Donde el resultado conseguido con la ejecuci n de cada uno de ellos es exitoso tal como se muestra en la figura 18 lt C A 5 localhost 81 tesis index ohp Analisis Completo Figura 18 Resultado de la sentencia Select Fuente Elaboracion Propia e Insert La siguiente prueba en elaborarse es la inclusion de las reglas para la evaluacion de la sentencia Insert del lenguaje de manipulaci n de datos Al igual que para la sentencia Select se eval a la buena estructuraci n de la sentencia A continuaci n se ilustran los diagramas de conway correspondientes insertstm columlist 0 collist column insertcommalist insert_atom Tabla 2 Diagrama de Conway para sentencia INSERT Elaboraci n Propia En la figura 19 se muestra la inclusi n de las reglas de producci n para la sentencia Insert input sqllist input sqllist SEMIC sqllist sqllist SEMIC sql sqllist sql sql dml dml insertstm insertstm INSERT INTO table columnlist values table NAME PUNTO NAME table NAME columnlist LPAREN collist RPAREN collist collist COMMA column collist column column NAME
39. uerdo si las mismas cumplen o no con la estructura correspondiente A continuaci n se realizan una serie de pruebas e La primera prueba se efectuar a la clase principal database php y se implementar la clase TestOfDatabase que se ilustra enseguida lt require_once simpletest autorun php require_once database php class TestOfDatabase extends UnitTestCase Funetio n Construct 1 parent CoOnstruct lest database j function testEjecutarCreatedatabase Sdb new Database ROOT DATABASE Sthis gt assertTrue db gt ejecutar CREATE DATABASE prueba j function testEjecutarCreatetable Sdb new Database prueba Sthis gt assertTrue db gt ejecutar CREATE TABLE tabla campol INTEGER NOT NULL AUTO_INCREMENT campo2 CHARACTER DEFAULT 1 campo3 INTEGER function testEjecutarInsert Sdb new Database tesisp Sthis gt assertTrue db gt ejecutar INSERT INTO join campol campo2 VALUES 15 q j function testEjecutarUpdate Sdb new Database tesisp Sthis gt assertTrue db gt ejecutar UPDATE join SET campo2 c WHERE campol 2 j function testEjecutarDelete Sdb new Database tesisp this gt assertTrue is_numeric db gt ejecutar DELETE FROM join WHERE campol 4 j function testEjecutarSelect Sdb new Database tesisp Sthis gt assertTrue db gt ejecutar SELECT FROM join instanceof ResultSet function testEjecutarDroptable
40. values VALUES LPAREN insertcommalist RPAREN insertcommalist insertcommalist COMMA insert_atom insertcommalist insert_atom insert_atom atom insert atom NULL atom literal literal CHARVAL literal INTNUM Figura 19 Reglas de producci n de la sentencia Insert Elaboraci n Propia El caso de prueba realizado para este conjunto de reglas es INSERT INTO tabla campol campo2 VALUES 1 2 Figura 20 Ejemplo para la sentencia Insert Elaboracion Propia Y el resultado que se obtuvo como ejecuci n de la sentencia Sql para el Insert es exitoso tal como se ilustra en la figura 21 C A 10 localhost 81 tesis index php Analisis Completo Figura 21 Resultado de la sentencia Insert Fuente Elaboraci n Propia e Update Para la creaci n de la sentencia Update se elaboraron las reglas que componen la estructura de la misma haci ndose el procedimiento similar al que se realiz para la evaluaci n de las sentencias anteriores Se Muestra a continuaci n los diagramas de conway updatestm assigment_commalist assigment Tabla 3 Diagrama de Conway para sentencia UPDATE Elaboracion Propia A continuaci n se ilustra la figura 25 input sqllist input sqllist SEMIC sqllist sqllist SEMIC sql sqllist sql sql dml dml updatestm updatestm UPDATE table SET assigment_commalist where table NAME PUNTO NAME

Download Pdf Manuals

image

Related Search

Related Contents

bulletin CF avec Pages (d`origine) - copie - Chemin Faisant  Philips QG3330  operating instructions instructions de fonctionnement instrucciones  CodonCode Aligner User Manual  Simple Audio Roomplayer II  Guía del usuario  

Copyright © All rights reserved.
Failed to retrieve file