Hola amigos...queria ver si no me echan una mano, con un proyecto para la universidad, la cosa es que con un archivo de entrada, en el cual van a estar las sentencias de SQL, en realidad solo la "select", pero son varias, asi:
select * from Facturas;
select code,nombre from Clientes;
pero tambien hay sentencias erroneas, para probar si el programa las detecta
select from Alumno
tambien tengo 2 archivos: uno llamado Facturas.txt y el otro Clientes.txt.
Entonces despues de revisar si la gramatica de las sentencias SQL estan correctas, se deben ejecuatar dichas sentencias correctas, de esta manera, por ejemplo en el archivo de entrada hay una linea asi:
select code,nombre from Clientes;
por lo cual se debe ir al archivo Clientes.txt y extraer las columnas code y nombre, para luego ser mostrados en pantalla....
les dejo un codigo que he estado haciendo...esta mal...pero con algo se empieza no???
package proyec_2; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.StringTokenizer; import java.util.logging.Level; import java.util.logging.Logger; public class SQL { String s1,c,CC,ss2; String s2,Campo; String s,D; String SS; int id=0; { // Cargamos el buffer con el contenido del archivo try{ // Leemos la primera linea while((s1 = br.readLine())!=null){ // System.out.println ("La primera linea del archivo es: " + s1); // System.out.println ("La linea tiene " + s1.length() + " caracteres"); // // System.out.println (); // System.out.println ("Separando la linea en trozos tenemos las siguientes palabras:"); int numTokens = 0; // bucle por todas las palabras while (st.hasMoreTokens()) { s2 = st.nextToken(); Abr.add(s2); numTokens++; } Logger.getLogger(Stream.class.getName()).log(Level.SEVERE, null, ex); } } String DATOS; for(int x=0;x<Abr.size();x++){ if(Abr.get(x).equals("from")){ int TmT=Table.length(); String cortado; cortado = Table.substring(0,TmT-1); Put_in_memory(cortado); } } } //busqueda de Facturas for(int x=0;x<Abr.size();x++){ if(Abr.get(x).equals("Facturas;")){ for(int y=0; y<Abr.size();y++) if(DATOS!="select"){ int t=x-1; DATOS=Abr.get(t).toString(); DT.add(DATOS); t--; } } } } for(int x=0;x<MTX.size();x++){ if(MTX.get(x).equals(data)){ int m=3; m=m+3; DAT_to_Print.add(Campos); // for(int y=0;y<MTX.size();y++){ // // } //int TmT=Table.length(); //String cortado; //cortado = Table.substring(0,TmT-1); //System.out.println("Cortado = "+cortado); //Put_in_memory(cortado); } } } // Cargamos el buffer con el contenido del archivo //try{ // BufferedReader br = new BufferedReader (new FileReader ("archivo_prueba.txt")); // // // Leemos la primera linea // // while((s1 = br.readLine())!=null){ // //// System.out.println ("La primera linea del archivo es: " + s1); //// System.out.println ("La linea tiene " + s1.length() + " caracteres"); //// //// System.out.println (); //// System.out.println ("Separando la linea en trozos tenemos las siguientes palabras:"); // // int numTokens = 0; // int numTokens2 = 0; // StringTokenizer st = new StringTokenizer (s1,"+,"); // // // bucle por todas las palabras // while (st.hasMoreTokens()) // { // ss2 = st.nextToken(); // Abr2.add(ss2); // } // // for(int a=0;a<Abr2.size();a++) // for(int f=0;f<MTX.size();f++) // for(int c=0;c<CL.size();c++) // if(Abr2.get(a).equals("*")){ // // System.out.println("ASterisco"); // System.out.println (" Asterisco " +" es: " +Abr2.get(a)); // } // else if(Abr2.get(a).equals(MTX.get(f))){ // switch(id){ // case 0: // System.out.println("ERROR EN CAMPOS Y/O TABLA factura"); // case 1: // //System.out.println("Datos...FAC----"); // System.out.println (" Fac es: " + MTX.get(f)); // // } // }else if(Abr2.get(a).equals(CL.get(c))){ // switch(id){ // case 0: // System.out.println("ERROR EN CAMPOS Y/O TABLA clientes"); // case 1: // //System.out.println("Datos...FAC----"); // System.out.println (" Clientes es: " + CL.get(f)); // // } // } // } // // } catch (IOException ex) { // Logger.getLogger(Stream.class.getName()).log(Level.SEVERE, null, ex); // // System.out.println("ABR2 "+Abr2); // } } if(!n.exists()){ } else{ if(name.equals("Facturas")) { try { // Leemos la primera linea while((s = brs.readLine())!=null){ // int numTokens = 0; // bucle por todas las palabras while (st.hasMoreTokens()) { SS = st.nextToken(); MTX.add(SS); } id=1; } try{ // Leemos la primera linea while((s1 = br.readLine())!=null){ // System.out.println ("La primera linea del archivo es: " + s1); // System.out.println ("La linea tiene " + s1.length() + " caracteres"); // // System.out.println (); // System.out.println ("Separando la linea en trozos tenemos las siguientes palabras:"); int numTokens = 0; int numTokens2 = 0; // bucle por todas las palabras while (st.hasMoreTokens()) { ss2 = st.nextToken(); Abr2.add(ss2); } } for(int a=0;a<DT.size();a++) for(int f=0;f<3;f++) // for(int c=0;c<CL.size();c++) switch(id){ case 0: case 1: if(DT.get(a).equals("*")){ }else if(DT.get(a).equals(MTX.get(f))){ } } Logger.getLogger(Stream.class.getName()).log(Level.SEVERE, null, ex); } } Logger.getLogger(Obtiene_Matriz_de_Archivo.class.getName()).log(Level.SEVERE, null, ex); } }else id=0; } if(name.equals("Clientes")) { try { // Leemos la primera linea while((c = brs.readLine())!=null){ // int numTokens = 0; // bucle por todas las palabras while (cl.hasMoreTokens()) { CC = cl.nextToken(); CL.add(CC); id=1; } } } Logger.getLogger(Obtiene_Matriz_de_Archivo.class.getName()).log(Level.SEVERE, null, ex); } }else id=0; } // MTX.clear(); // System.out.println("MTX "+MTX); } } { SQL OBM = new SQL(); OBM.AN_SQL(); OBM.search(); OBM.search_F(); OBM.search_After_Select(); } }
Se parte de Code Army!
Esta acción es solo para usuarios registrados