Advertisement
Guest User

Untitled

a guest
Apr 16th, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.61 KB | None | 0 0
  1. package bbdd.lab12;
  2. import java.sql.*;
  3. import java.util.*;
  4.  
  5. import com.sun.corba.se.impl.ior.GenericTaggedComponent;
  6.  
  7. public class Program {
  8.  
  9. String urlDESA = "jdbc:oracle:thin:@156.35.94.99:1521:DESA";
  10. String usernameDESA = "UO257745";
  11. String passwordDESA = "Qgq7f2wk";
  12.  
  13. static String url = "jdbc:hsqldb:hsql://localhost/labdb";
  14. static String username = "SA";
  15. static String password = "";
  16.  
  17. public static void main(String[] args) throws SQLException, ClassNotFoundException {
  18. Class.forName("oracle.jdbc.OracleDriver");
  19.  
  20.  
  21.  
  22. // exercise1_1();
  23. // exercise1_2();
  24. // exercise2();
  25. // exercise3();
  26. // exercise4();
  27. // exercise5_1();
  28. // exercise5_2();
  29. // exercise5_3();
  30. // exercise6_1();
  31. // exercise6_2();
  32. // exercise7_1();
  33. // exercise7_2();
  34. exercise8();
  35.  
  36.  
  37.  
  38. // String isbn = rs.getString(1);
  39. // float precio = rs.getDouble("Precio"); }
  40. // Ejemplos para leer por teclado
  41. // System.out.println("Leer un entero por teclado");
  42. // int entero = ReadInt();
  43. // System.out.println("Leer una cadena por teclado");
  44. // String cadena = ReadString();
  45. }
  46.  
  47. public static Connection getConnection() throws SQLException {
  48. Connection conn= DriverManager.getConnection(url,username, password);
  49. return conn;
  50. }
  51.  
  52. /*
  53. IMPRIMIR
  54. */
  55. public static void imprimir(ResultSet rs) throws SQLException {
  56.  
  57.  
  58. System.out.println("");
  59. int contador=1;
  60. int contador2=1;
  61. int columnas=rs.getMetaData().getColumnCount();
  62. while (rs.next()){
  63. while(contador2<=columnas) {
  64. System.out.print(rs.getMetaData().getColumnName(contador2) + "\t");
  65. contador2++;}
  66. System.out.println("");
  67. while(contador<=columnas) {
  68. System.out.print(rs.getString(contador) + "\t");
  69. contador++;}
  70. }
  71. }
  72.  
  73. /*
  74. 1. Mostrar por pantalla los resultados de las consultas 21 y 32 de la Práctica 2.
  75. 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.
  76. */
  77. public static void exercise1_1() throws SQLException {
  78. Connection conn= getConnection();
  79. String sentencia = "select distinct cli.NOMBRE, cli.APELLIDO\r\n" +
  80. "from Clientes cli, Ventas ven, Concesionarios con, Coches co\r\n" +
  81. "where ven.dni=cli.dni\r\n" +
  82. " and ven.cifc=con.cifc\r\n" +
  83. " and con.ciudadc='madrid'\r\n" +
  84. " and ven.codcoche=co.codcoche\r\n" +
  85. " and co.modelo='gti'";
  86. Statement stat = conn.createStatement();
  87. ResultSet rs =stat.executeQuery(sentencia);
  88.  
  89. imprimir(rs);
  90. rs.close();
  91. stat.close();
  92. conn.close();
  93. }
  94.  
  95. /*
  96. 1.2. 32. Obtener un listado de los concesionarios cuyo promedio de coches supera a la cantidad promedio de todos los concesionarios.
  97. */
  98. public static void exercise1_2(Connection conn) throws SQLException {
  99. String sentencia = "SELECT cifc, nombrec, ciudadc \r\n" +
  100. " FROM concesionarios \r\n" +
  101. " WHERE cifc IN (\r\n" +
  102. " SELECT cifc\r\n" +
  103. " FROM distribucion \r\n" +
  104. " GROUP BY cifc \r\n" +
  105. " HAVING AVG(cantidad)>(\r\n" +
  106. " SELECT AVG(cantidad) \r\n" +
  107. " FROM distribucion\r\n" +
  108. " )\r\n" +
  109. " );";
  110.  
  111. Statement stat = conn.createStatement();
  112. ResultSet rs =stat.executeQuery(sentencia);
  113.  
  114. imprimir(rs);
  115. rs.close();
  116. stat.close();
  117. conn.close();
  118. }
  119.  
  120. /*
  121. 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.
  122. 6. Obtener el nombre de las marcas de las que se han vendido coches de un color introducido por el usuario.
  123. */
  124. public static void exercise2() throws SQLException {
  125. Connection conn= getConnection();
  126. System.out.println("INTRODUZCA UN COLOR EN MINUSCULAS");
  127. String color = ReadString();
  128. String sentencia = "SELECT DISTINCT M.nombrem \r\n" +
  129. " FROM marcas M, marco R, ventas V\r\n" +
  130. " WHERE M.cifm=R.cifm \r\n" +
  131. " AND R.codcoche=V.codcoche\r\n" +
  132. " AND V.color='" + color +"';";
  133.  
  134. Statement stat = conn.createStatement();
  135. ResultSet rs =stat.executeQuery(sentencia);
  136.  
  137. imprimir(rs);
  138. rs.close();
  139. stat.close();
  140. conn.close();
  141. }
  142.  
  143. /*
  144. 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.
  145. 27. Obtener el cifc de los concesionarios que disponen de una cantidad de coches comprendida entre dos cantidades introducidas por el usuario, ambas inclusive.
  146. */
  147. public static void exercise3() throws SQLException {
  148. Connection conn= getConnection();
  149. System.out.println("INTRODUZCA EL PRIMER NUMERO");
  150. int numero1 = ReadInt();
  151.  
  152. System.out.println("INTRODUZCA EL SEGUNDO NUMERO");
  153. int numero2 = ReadInt();
  154.  
  155. String sentencia = "SELECT cifc, sum(cantidad) Total\r\n" +
  156. " FROM distribucion \r\n" +
  157. " GROUP BY cifc \r\n" +
  158. " HAVING sum(cantidad) BETWEEN ? AND ?";
  159.  
  160. PreparedStatement stat = conn.prepareStatement(sentencia);
  161. stat.setInt(1, numero1);
  162. stat.setInt(2, numero2);
  163.  
  164. ResultSet rs =stat.executeQuery();
  165.  
  166. imprimir(rs);
  167. rs.close();
  168. stat.close();
  169. conn.close();
  170. }
  171.  
  172. /*
  173. 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.
  174. 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.
  175. */
  176. public static void exercise4() throws SQLException {
  177. Connection conn= getConnection();
  178. System.out.println("INTRODUZCA LA CIUDAD DEL CONCESIONARIO");
  179. String ciudad = ReadString();
  180.  
  181. System.out.println("INTRODUZCA EL COLOR");
  182. String color = ReadString();
  183.  
  184. String sentencia = "SELECT DISTINCT CL.nombre\r\n" +
  185. " FROM clientes CL, ventas V\r\n" +
  186. " WHERE V.dni=CL.dni \r\n" +
  187. " AND CL.dni NOT IN (\r\n" +
  188. " SELECT V.dni \r\n" +
  189. " FROM concesionarios CO, ventas V \r\n" +
  190. " WHERE CO.cifc=V.cifc \r\n" +
  191. " AND CO.ciudadc=?\r\n" +
  192. " AND V.color=?\r\n" +
  193. " );";
  194.  
  195. PreparedStatement stat = conn.prepareStatement(sentencia);
  196. stat.setString(1, ciudad);
  197. stat.setString(2, color);
  198.  
  199. ResultSet rs =stat.executeQuery();
  200.  
  201. imprimir(rs);
  202. rs.close();
  203. stat.close();
  204. conn.close();
  205. }
  206.  
  207. /*
  208. 5. Realizar una aplicación en Java que haciendo uso de la instrucción SQL adecuada:
  209. 5.1. Introduzca datos en la tabla coches cuyos datos son introducidos por el usuario
  210. */
  211. public static void exercise5_1() throws SQLException {
  212. Connection conn= getConnection();
  213. System.out.println("INTRODUZCA EL PARAMETRO DE LA PRIMERA FILA");
  214. int p1 = ReadInt();
  215.  
  216. System.out.println("INTRODUZCA EL PARAMETRO DE LA SEGUNDA FILA");
  217. String p2 = ReadString();
  218.  
  219. System.out.println("INTRODUZCA EL PARAMETRO DE LA TERCERA FILA");
  220. String p3 = ReadString();
  221.  
  222. String sentencia="INSERT INTO COCHES (codcoche, nombrech, modelo) VALUES (?,?,?);";
  223.  
  224. PreparedStatement stat = conn.prepareStatement(sentencia);
  225. stat.setInt(1, p1);
  226. stat.setString(2, p2);
  227. stat.setString(3, p3);
  228. int i=stat.executeUpdate();
  229. if(i==1){
  230. System.out.println("LOS DATOS SE HAN INSERTADO CORRECTAMENTE.");}
  231. else {
  232. System.out.println("OCURRIO UN ERROR.");
  233. }
  234. stat.close();
  235. conn.close();
  236.  
  237. }
  238.  
  239. /*
  240. 5.2. Borre un determinado coche cuyo código es introducido por el usuario.
  241. */
  242. public static void exercise5_2() throws SQLException {
  243. Connection conn= getConnection();
  244. System.out.println("INTRODUZCA EL CODIGO DEL COCHE QUE DESEA BORRAR");
  245. String codigo = ReadString();
  246.  
  247. String sentencia="DELETE FROM COCHES WHERE codcoche=?";
  248. PreparedStatement stat = conn.prepareStatement(sentencia);
  249. stat.setString(1, codigo);
  250.  
  251. int i=stat.executeUpdate();
  252. if(i==1){
  253. System.out.println("LOS DATOS SE HAN INSERTADO CORRECTAMENTE.");}
  254. else {
  255. System.out.println("OCURRIO UN ERROR.");
  256. }
  257. stat.close();
  258. conn.close();
  259. }
  260.  
  261. /*
  262. 5.3. Actualice el nombre y el modelo para un determinado coche cuyo código es introducido por el usuario.
  263. */
  264. public static void exercise5_3() throws SQLException {
  265. Connection conn= getConnection();
  266. System.out.println("INTRODUZCA EL CODIGO DEL COCHE QUE DESEA MODIFICAR");
  267. String codigo = ReadString();
  268.  
  269. System.out.println("INTRODUZCA EL NUEVO NOMBRE");
  270. String nombre = ReadString();
  271.  
  272. System.out.println("INTRODUZCA EL NUEVO MODELO");
  273. String modelo = ReadString();
  274.  
  275. String sentencia="UPDATE COCHES\r\n" +
  276. "SET nombrech = ?, modelo= ? \r\n" +
  277. "WHERE codcoche=?";
  278. PreparedStatement stat = conn.prepareStatement(sentencia);
  279. stat.setString(1, nombre);
  280. stat.setString(2, modelo);
  281. stat.setString(3, codigo);
  282.  
  283. int i=stat.executeUpdate();
  284. if(i==1){
  285. System.out.println("LOS DATOS SE HAN INSERTADO CORRECTAMENTE.");}
  286. else {
  287. System.out.println("OCURRIO UN ERROR.");
  288. }
  289. stat.close();
  290. conn.close();
  291. }
  292.  
  293. /*
  294. 6. Invocar la función y el procedimiento del ejercicio 10 de la Práctica 10 desde una aplicación Java.
  295. 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.
  296. 6.1. Funcion
  297. */
  298. public static void exercise6_1() throws SQLException {
  299. Connection conn= getConnection();
  300. if(!url.contains("oracle"))return;
  301. System.out.println("Introduce el codigo de un concesionario: ");
  302. String cifc= ReadString();
  303.  
  304. StringBuilder query= new StringBuilder();
  305. query.append("{? = call elena.FnumVentasConcesionario(?)}");
  306. //query.append("begin ?:= function(?); end;");
  307.  
  308. CallableStatement cst= conn.prepareCall(query.toString());
  309. cst.registerOutParameter(1, Types.INTEGER);
  310. cst.setString(2, cifc);
  311. cst.execute();
  312. int ventas= cst.getInt(1);
  313.  
  314. System.out.println("Ventas\n" + ventas);
  315. cst.close();
  316. conn.close();
  317. }
  318.  
  319. /*
  320. 6.1. Procedimiento
  321. */
  322. public static void exercise6_2() throws SQLException {
  323. Connection conn= getConnection();
  324. if(!url.contains("oracle"))return;
  325. System.out.println("Introduce el codigo de un concesionario: ");
  326. String cifc= ReadString();
  327.  
  328. StringBuilder query= new StringBuilder();
  329. query.append("{call elena.PnumVentasConcesionario(?,?)}");
  330. //query.append("begin ?:= function(?); end;");
  331.  
  332. CallableStatement cst= conn.prepareCall(query.toString());
  333. cst.registerOutParameter(2, Types.INTEGER);
  334. cst.setString(1, cifc);
  335. cst.execute();
  336. int ventas= cst.getInt(2);
  337.  
  338. System.out.println("Ventas\n" + ventas);
  339. cst.close();
  340. conn.close();
  341. }
  342.  
  343. /*
  344. 7. Invocar la función y el procedimiento del ejercicio 11 de la Práctica 10 desde una aplicación Java.
  345. 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.
  346. 7.1. Funcion
  347. */
  348. public static void exercise7_1() throws SQLException {
  349. Connection conn= getConnection();
  350. if(!url.contains("oracle"))return;
  351. System.out.println("Introduce la ciudad que desea: ");
  352. String ciudad= ReadString();
  353.  
  354. StringBuilder query= new StringBuilder();
  355. query.append("{? = call elena.Fclientesporciudad(?)}");
  356. //query.append("begin ?:= function(?); end;");
  357.  
  358. CallableStatement cst= conn.prepareCall(query.toString());
  359. cst.registerOutParameter(1, Types.INTEGER);
  360. cst.setString(2, ciudad);
  361. cst.execute();
  362. int clientes= cst.getInt(1);
  363.  
  364. System.out.println("Clientes en la ciudad\n" + clientes);
  365. cst.close();
  366. conn.close();
  367. }
  368.  
  369. /*
  370. 7.2. Procedimiento
  371. */
  372. public static void exercise7_2() throws SQLException {
  373. Connection conn= getConnection();
  374. if(!url.contains("oracle"))return;
  375. System.out.println("Introduce la ciudad deseada: ");
  376. String ciudad=ReadString();
  377.  
  378. StringBuilder query= new StringBuilder();
  379. query.append("{call elena.Pclientesporciudad(?,?)}");
  380. //query.append("begin ?:= function(?); end;");
  381.  
  382. CallableStatement cst= conn.prepareCall(query.toString());
  383. cst.registerOutParameter(2, Types.INTEGER);
  384. cst.setString(1, ciudad);
  385. cst.execute();
  386. int clientes= cst.getInt(2);
  387.  
  388. System.out.println("Clientes en la ciudad\n" +clientes);
  389. cst.close();
  390. conn.close();
  391. }
  392.  
  393. /*
  394. * Crear un método en Java que muestre la misma información que el procedimiento del ejercicio
  395. 3 de la Práctica 11.
  396. Deberá imprimir por pantalla los coches que han sido adquiridos
  397. por cada cliente. Además deberá imprimirse para cada cliente el número de coches que ha
  398. comprado y el número de concesionarios en los que ha comprado.
  399. */
  400.  
  401. public static void exercise8() throws SQLException {
  402. Connection conn= getConnection();
  403. System.out.println("DNIS:");
  404.  
  405. String sentencia = "SELECT dni, nombre, apellido FROM clientes ";
  406.  
  407. Statement stat = conn.createStatement();
  408. ResultSet rs =stat.executeQuery(sentencia);
  409.  
  410. String sentencia2= "SELECT count(v.codcoche) FROM VENTAS v WHERE dni=?";
  411. PreparedStatement stat2 = conn.prepareStatement(sentencia2);
  412.  
  413. while(rs.next()) {
  414. String dni=rs.getString("dni");
  415. stat2.setString(1, dni);
  416.  
  417. ResultSet rs2 =stat2.executeQuery();
  418. imprimir(rs2);
  419. }
  420. rs.close();
  421. stat.close();
  422. conn.close();
  423. }
  424.  
  425. @SuppressWarnings("resource")
  426. private static String ReadString(){
  427. return new Scanner(System.in).nextLine();
  428. }
  429.  
  430. @SuppressWarnings("resource")
  431. private static int ReadInt(){
  432. return new Scanner(System.in).nextInt();
  433. }
  434. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement