Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package bbdd.lab12;
- import java.sql.*;
- import java.util.*;
- import com.sun.corba.se.impl.ior.GenericTaggedComponent;
- public class Program {
- String urlDESA = "jdbc:oracle:thin:@156.35.94.99:1521:DESA";
- String usernameDESA = "UO257745";
- String passwordDESA = "Qgq7f2wk";
- static String url = "jdbc:hsqldb:hsql://localhost/labdb";
- static String username = "SA";
- static String password = "";
- public static void main(String[] args) throws SQLException, ClassNotFoundException {
- Class.forName("oracle.jdbc.OracleDriver");
- // exercise1_1();
- // exercise1_2();
- // exercise2();
- // exercise3();
- // exercise4();
- // exercise5_1();
- // exercise5_2();
- // exercise5_3();
- // exercise6_1();
- // exercise6_2();
- // exercise7_1();
- // exercise7_2();
- exercise8();
- // String isbn = rs.getString(1);
- // float precio = rs.getDouble("Precio"); }
- // Ejemplos para leer por teclado
- // System.out.println("Leer un entero por teclado");
- // int entero = ReadInt();
- // System.out.println("Leer una cadena por teclado");
- // String cadena = ReadString();
- }
- public static Connection getConnection() throws SQLException {
- Connection conn= DriverManager.getConnection(url,username, password);
- return conn;
- }
- /*
- IMPRIMIR
- */
- public static void imprimir(ResultSet rs) throws SQLException {
- System.out.println("");
- int contador=1;
- int contador2=1;
- int columnas=rs.getMetaData().getColumnCount();
- while (rs.next()){
- while(contador2<=columnas) {
- System.out.print(rs.getMetaData().getColumnName(contador2) + "\t");
- contador2++;}
- System.out.println("");
- while(contador<=columnas) {
- System.out.print(rs.getString(contador) + "\t");
- contador++;}
- }
- }
- /*
- 1. Mostrar por pantalla los resultados de las consultas 21 y 32 de la Práctica 2.
- 1.1. 21. Obtener el nombre y el apellido de los clientes que han adquirido un coche en un concesionario de Madrid, el cual dispone de coches del modelo gti.
- */
- public static void exercise1_1() throws SQLException {
- Connection conn= getConnection();
- String sentencia = "select distinct cli.NOMBRE, cli.APELLIDO\r\n" +
- "from Clientes cli, Ventas ven, Concesionarios con, Coches co\r\n" +
- "where ven.dni=cli.dni\r\n" +
- " and ven.cifc=con.cifc\r\n" +
- " and con.ciudadc='madrid'\r\n" +
- " and ven.codcoche=co.codcoche\r\n" +
- " and co.modelo='gti'";
- Statement stat = conn.createStatement();
- ResultSet rs =stat.executeQuery(sentencia);
- imprimir(rs);
- rs.close();
- stat.close();
- conn.close();
- }
- /*
- 1.2. 32. Obtener un listado de los concesionarios cuyo promedio de coches supera a la cantidad promedio de todos los concesionarios.
- */
- public static void exercise1_2(Connection conn) throws SQLException {
- String sentencia = "SELECT cifc, nombrec, ciudadc \r\n" +
- " FROM concesionarios \r\n" +
- " WHERE cifc IN (\r\n" +
- " SELECT cifc\r\n" +
- " FROM distribucion \r\n" +
- " GROUP BY cifc \r\n" +
- " HAVING AVG(cantidad)>(\r\n" +
- " SELECT AVG(cantidad) \r\n" +
- " FROM distribucion\r\n" +
- " )\r\n" +
- " );";
- Statement stat = conn.createStatement();
- ResultSet rs =stat.executeQuery(sentencia);
- imprimir(rs);
- rs.close();
- stat.close();
- conn.close();
- }
- /*
- 2. Mostrar por pantalla el resultado de la consulta 6 de la Práctica 2 de forma el color de la búsqueda sea introducido por el usuario.
- 6. Obtener el nombre de las marcas de las que se han vendido coches de un color introducido por el usuario.
- */
- public static void exercise2() throws SQLException {
- Connection conn= getConnection();
- System.out.println("INTRODUZCA UN COLOR EN MINUSCULAS");
- String color = ReadString();
- String sentencia = "SELECT DISTINCT M.nombrem \r\n" +
- " FROM marcas M, marco R, ventas V\r\n" +
- " WHERE M.cifm=R.cifm \r\n" +
- " AND R.codcoche=V.codcoche\r\n" +
- " AND V.color='" + color +"';";
- Statement stat = conn.createStatement();
- ResultSet rs =stat.executeQuery(sentencia);
- imprimir(rs);
- rs.close();
- stat.close();
- conn.close();
- }
- /*
- 3. Realizar una aplicación en Java para ejecutar la consulta 27 de la Práctica 2 de forma que los límites la cantidad de coches sean introducidos por el usuario.
- 27. Obtener el cifc de los concesionarios que disponen de una cantidad de coches comprendida entre dos cantidades introducidas por el usuario, ambas inclusive.
- */
- public static void exercise3() throws SQLException {
- Connection conn= getConnection();
- System.out.println("INTRODUZCA EL PRIMER NUMERO");
- int numero1 = ReadInt();
- System.out.println("INTRODUZCA EL SEGUNDO NUMERO");
- int numero2 = ReadInt();
- String sentencia = "SELECT cifc, sum(cantidad) Total\r\n" +
- " FROM distribucion \r\n" +
- " GROUP BY cifc \r\n" +
- " HAVING sum(cantidad) BETWEEN ? AND ?";
- PreparedStatement stat = conn.prepareStatement(sentencia);
- stat.setInt(1, numero1);
- stat.setInt(2, numero2);
- ResultSet rs =stat.executeQuery();
- imprimir(rs);
- rs.close();
- stat.close();
- conn.close();
- }
- /*
- 4. Realizar una aplicación en Java para ejecutar la consulta 24 de la Práctica 2 de forma que tanto la ciudad del concesionario como el color sean introducidos por el usuario.
- 24. Obtener los nombres de los clientes que no han comprado coches de un color introducido por el usuario en concesionarios de una ciudad introducida por el usuario.
- */
- public static void exercise4() throws SQLException {
- Connection conn= getConnection();
- System.out.println("INTRODUZCA LA CIUDAD DEL CONCESIONARIO");
- String ciudad = ReadString();
- System.out.println("INTRODUZCA EL COLOR");
- String color = ReadString();
- String sentencia = "SELECT DISTINCT CL.nombre\r\n" +
- " FROM clientes CL, ventas V\r\n" +
- " WHERE V.dni=CL.dni \r\n" +
- " AND CL.dni NOT IN (\r\n" +
- " SELECT V.dni \r\n" +
- " FROM concesionarios CO, ventas V \r\n" +
- " WHERE CO.cifc=V.cifc \r\n" +
- " AND CO.ciudadc=?\r\n" +
- " AND V.color=?\r\n" +
- " );";
- PreparedStatement stat = conn.prepareStatement(sentencia);
- stat.setString(1, ciudad);
- stat.setString(2, color);
- ResultSet rs =stat.executeQuery();
- imprimir(rs);
- rs.close();
- stat.close();
- conn.close();
- }
- /*
- 5. Realizar una aplicación en Java que haciendo uso de la instrucción SQL adecuada:
- 5.1. Introduzca datos en la tabla coches cuyos datos son introducidos por el usuario
- */
- public static void exercise5_1() throws SQLException {
- Connection conn= getConnection();
- System.out.println("INTRODUZCA EL PARAMETRO DE LA PRIMERA FILA");
- int p1 = ReadInt();
- System.out.println("INTRODUZCA EL PARAMETRO DE LA SEGUNDA FILA");
- String p2 = ReadString();
- System.out.println("INTRODUZCA EL PARAMETRO DE LA TERCERA FILA");
- String p3 = ReadString();
- String sentencia="INSERT INTO COCHES (codcoche, nombrech, modelo) VALUES (?,?,?);";
- PreparedStatement stat = conn.prepareStatement(sentencia);
- stat.setInt(1, p1);
- stat.setString(2, p2);
- stat.setString(3, p3);
- int i=stat.executeUpdate();
- if(i==1){
- System.out.println("LOS DATOS SE HAN INSERTADO CORRECTAMENTE.");}
- else {
- System.out.println("OCURRIO UN ERROR.");
- }
- stat.close();
- conn.close();
- }
- /*
- 5.2. Borre un determinado coche cuyo código es introducido por el usuario.
- */
- public static void exercise5_2() throws SQLException {
- Connection conn= getConnection();
- System.out.println("INTRODUZCA EL CODIGO DEL COCHE QUE DESEA BORRAR");
- String codigo = ReadString();
- String sentencia="DELETE FROM COCHES WHERE codcoche=?";
- PreparedStatement stat = conn.prepareStatement(sentencia);
- stat.setString(1, codigo);
- int i=stat.executeUpdate();
- if(i==1){
- System.out.println("LOS DATOS SE HAN INSERTADO CORRECTAMENTE.");}
- else {
- System.out.println("OCURRIO UN ERROR.");
- }
- stat.close();
- conn.close();
- }
- /*
- 5.3. Actualice el nombre y el modelo para un determinado coche cuyo código es introducido por el usuario.
- */
- public static void exercise5_3() throws SQLException {
- Connection conn= getConnection();
- System.out.println("INTRODUZCA EL CODIGO DEL COCHE QUE DESEA MODIFICAR");
- String codigo = ReadString();
- System.out.println("INTRODUZCA EL NUEVO NOMBRE");
- String nombre = ReadString();
- System.out.println("INTRODUZCA EL NUEVO MODELO");
- String modelo = ReadString();
- String sentencia="UPDATE COCHES\r\n" +
- "SET nombrech = ?, modelo= ? \r\n" +
- "WHERE codcoche=?";
- PreparedStatement stat = conn.prepareStatement(sentencia);
- stat.setString(1, nombre);
- stat.setString(2, modelo);
- stat.setString(3, codigo);
- int i=stat.executeUpdate();
- if(i==1){
- System.out.println("LOS DATOS SE HAN INSERTADO CORRECTAMENTE.");}
- else {
- System.out.println("OCURRIO UN ERROR.");
- }
- stat.close();
- conn.close();
- }
- /*
- 6. Invocar la función y el procedimiento del ejercicio 10 de la Práctica 10 desde una aplicación Java.
- 10. Realizar un procedimiento y una función que dado un código de concesionario devuelve el número ventas que se han realizado en el mismo.
- 6.1. Funcion
- */
- public static void exercise6_1() throws SQLException {
- Connection conn= getConnection();
- if(!url.contains("oracle"))return;
- System.out.println("Introduce el codigo de un concesionario: ");
- String cifc= ReadString();
- StringBuilder query= new StringBuilder();
- query.append("{? = call elena.FnumVentasConcesionario(?)}");
- //query.append("begin ?:= function(?); end;");
- CallableStatement cst= conn.prepareCall(query.toString());
- cst.registerOutParameter(1, Types.INTEGER);
- cst.setString(2, cifc);
- cst.execute();
- int ventas= cst.getInt(1);
- System.out.println("Ventas\n" + ventas);
- cst.close();
- conn.close();
- }
- /*
- 6.1. Procedimiento
- */
- public static void exercise6_2() throws SQLException {
- Connection conn= getConnection();
- if(!url.contains("oracle"))return;
- System.out.println("Introduce el codigo de un concesionario: ");
- String cifc= ReadString();
- StringBuilder query= new StringBuilder();
- query.append("{call elena.PnumVentasConcesionario(?,?)}");
- //query.append("begin ?:= function(?); end;");
- CallableStatement cst= conn.prepareCall(query.toString());
- cst.registerOutParameter(2, Types.INTEGER);
- cst.setString(1, cifc);
- cst.execute();
- int ventas= cst.getInt(2);
- System.out.println("Ventas\n" + ventas);
- cst.close();
- conn.close();
- }
- /*
- 7. Invocar la función y el procedimiento del ejercicio 11 de la Práctica 10 desde una aplicación Java.
- 11. Realizar un procedimiento y una función que dada una ciudad que se le pasa como parámetro devuelve el número de clientes de dicha ciudad.
- 7.1. Funcion
- */
- public static void exercise7_1() throws SQLException {
- Connection conn= getConnection();
- if(!url.contains("oracle"))return;
- System.out.println("Introduce la ciudad que desea: ");
- String ciudad= ReadString();
- StringBuilder query= new StringBuilder();
- query.append("{? = call elena.Fclientesporciudad(?)}");
- //query.append("begin ?:= function(?); end;");
- CallableStatement cst= conn.prepareCall(query.toString());
- cst.registerOutParameter(1, Types.INTEGER);
- cst.setString(2, ciudad);
- cst.execute();
- int clientes= cst.getInt(1);
- System.out.println("Clientes en la ciudad\n" + clientes);
- cst.close();
- conn.close();
- }
- /*
- 7.2. Procedimiento
- */
- public static void exercise7_2() throws SQLException {
- Connection conn= getConnection();
- if(!url.contains("oracle"))return;
- System.out.println("Introduce la ciudad deseada: ");
- String ciudad=ReadString();
- StringBuilder query= new StringBuilder();
- query.append("{call elena.Pclientesporciudad(?,?)}");
- //query.append("begin ?:= function(?); end;");
- CallableStatement cst= conn.prepareCall(query.toString());
- cst.registerOutParameter(2, Types.INTEGER);
- cst.setString(1, ciudad);
- cst.execute();
- int clientes= cst.getInt(2);
- System.out.println("Clientes en la ciudad\n" +clientes);
- cst.close();
- conn.close();
- }
- /*
- * Crear un método en Java que muestre la misma información que el procedimiento del ejercicio
- 3 de la Práctica 11.
- Deberá imprimir por pantalla los coches que han sido adquiridos
- por cada cliente. Además deberá imprimirse para cada cliente el número de coches que ha
- comprado y el número de concesionarios en los que ha comprado.
- */
- public static void exercise8() throws SQLException {
- Connection conn= getConnection();
- System.out.println("DNIS:");
- String sentencia = "SELECT dni, nombre, apellido FROM clientes ";
- Statement stat = conn.createStatement();
- ResultSet rs =stat.executeQuery(sentencia);
- String sentencia2= "SELECT count(v.codcoche) FROM VENTAS v WHERE dni=?";
- PreparedStatement stat2 = conn.prepareStatement(sentencia2);
- while(rs.next()) {
- String dni=rs.getString("dni");
- stat2.setString(1, dni);
- ResultSet rs2 =stat2.executeQuery();
- imprimir(rs2);
- }
- rs.close();
- stat.close();
- conn.close();
- }
- @SuppressWarnings("resource")
- private static String ReadString(){
- return new Scanner(System.in).nextLine();
- }
- @SuppressWarnings("resource")
- private static int ReadInt(){
- return new Scanner(System.in).nextInt();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement