Advertisement
Guest User

Untitled

a guest
Feb 14th, 2020
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.87 KB | None | 0 0
  1. package harjoitystyo;
  2.  
  3. import java.sql.*;
  4. import java.util.*;
  5.  
  6. public class HarjoitysTyo {
  7.  
  8. public static void main(String[] args) throws SQLException {
  9. //Connection db = DriverManager.getConnection("jdbc:sqlite:tilaukset.db");
  10. //Statement s = db.createStatement();
  11. //Toiminnot t = new Toiminnot();
  12.  
  13. Yhteys yhteys = new Yhteys();
  14. Scanner input = new Scanner(System.in);
  15.  
  16. System.out.println("Toiminnot: "
  17. + "\n1: Luo tietokannat"
  18. + "\n2: Lisää paikka"
  19. + "\n3: Lisää asiakas"
  20. + "\n4: Lisää paketti"
  21. + "\n5: Lisää tapahtuma"
  22. + "\n6: Hae paketin tapahtumat"
  23. + "\n7: Hae asiakkaan paketit"
  24. + "\n8: Hae paikan tapahtumat tiettynä päivänä"
  25. + "\n9: Suorita tehokkuustesti");
  26.  
  27. while (true) {
  28. System.out.println("Valitse toiminto (1-9): ");
  29. int number = input.nextInt();
  30. input.nextLine();
  31. switch (number) {
  32. case 1:
  33. yhteys.luoTietokanta();
  34. break;
  35.  
  36. case 2:
  37. System.out.print("Anna paikan nimi: ");
  38. String paikkaNimi = input.nextLine();
  39. yhteys.lisaaPaikka(paikkaNimi);
  40. break;
  41.  
  42. case 3:
  43. System.out.print("Anna asiakkaan nimi: ");
  44. String asiakasNimi = input.nextLine();
  45. yhteys.lisaaAsiakas(asiakasNimi);
  46. break;
  47.  
  48. case 4:
  49. System.out.print("Anna paketin seurantakoodi: ");
  50. int seurantaKoodi = input.nextInt();
  51. input.nextLine();
  52.  
  53. System.out.print("Anna asiakkaan nimi: ");
  54. asiakasNimi = input.nextLine();
  55. yhteys.lisaaPaketti(seurantaKoodi, asiakasNimi);
  56. break;
  57.  
  58. case 5:
  59. System.out.print("Anna paketin seurantakoodi: ");
  60. seurantaKoodi = input.nextInt();
  61. input.nextLine();
  62.  
  63. System.out.print("Anna tapahtuman paikka: ");
  64. String paikka = input.nextLine();
  65.  
  66. System.out.print("Anna tapahtuman kuvaus: ");
  67. String kuvaus = input.nextLine();
  68.  
  69. yhteys.lisaaTapahtuma(seurantaKoodi, paikka, kuvaus);
  70. break;
  71.  
  72. case 6:
  73. System.out.print("Anna paketin seurantakoodi: ");
  74. int koodi = input.nextInt();
  75. input.nextLine();
  76. yhteys.haePaketinTapahtumat(koodi);
  77. break;
  78. case 7:
  79. System.out.println("Anna asiakkaan nimi: ");
  80. asiakasNimi = input.nextLine();
  81. yhteys.haeAsiakkaanPaketit(asiakasNimi);
  82. break;
  83. case 8:
  84. System.out.println("Anna paikan nimi: ");
  85. //lisää päivämäärä input jotenkin
  86. paikkaNimi = input.nextLine();
  87.  
  88.  
  89. }
  90. }
  91. }
  92.  
  93. }
  94. _______________________________________________________________________________________________________________________________________
  95. package harjoitystyo;
  96.  
  97. import java.sql.*;
  98.  
  99. public class Yhteys {
  100.  
  101. public Connection conn = null;
  102. public Statement statement = null;
  103. public PreparedStatement pstatement = null;
  104. public ResultSet rset = null;
  105.  
  106. public Yhteys() throws SQLException {
  107. try {
  108. this.conn = DriverManager.getConnection("jdbc:sqlite:tilaukset.db");
  109. this.statement = conn.createStatement();
  110. statement.execute("PRAGMA foreign_keys = ON");
  111. } catch (SQLException e) {
  112. System.err.println(e.getMessage());
  113. System.exit(0);
  114. }
  115.  
  116. }
  117.  
  118. public void luoTietokanta() throws SQLException {
  119. try {
  120. statement.execute("CREATE TABLE Paikka ("
  121. + "id INTEGER PRIMARY KEY, "
  122. + "nimi TEXT UNIQUE)");
  123. statement.execute("CREATE TABLE Asiakas ("
  124. + "id INTEGER PRIMARY KEY, "
  125. + "nimi TEXT UNIQUE)");
  126. statement.execute("CREATE TABLE Paketti ("
  127. + "id INTEGER PRIMARY KEY, "
  128. + "seurantakoodi INTEGER UNIQUE, "
  129. + "asiakas_id INTEGER REFERENCES Asiakas)");
  130. statement.execute("CREATE TABLE Tapahtuma ("
  131. + "id INTEGER PRIMARY KEY, "
  132. + "kuvaus TEXT, "
  133. + "paketti_id INTEGER REFERENCES Paketti, "
  134. + "paikka_id INTEGER REFERENCES Paikka, "
  135. + "paiva DATETIME DEFAULT CURRENT_DATE, "
  136. + "aika DATETIME DEFAULT CURRENT_TIME)");
  137. System.out.println("Tietokanta luotu");
  138. } catch (SQLException e) {
  139. System.err.println("Tietokanta on jo luotu");
  140. }
  141. }
  142.  
  143. public void lisaaPaikka(String nimi) throws SQLException {
  144. try {
  145. pstatement = conn.prepareStatement("INSERT INTO Paikka(nimi) VALUES (?)");
  146. pstatement.setString(1, nimi);
  147. pstatement.execute();
  148. } catch (SQLException e) {
  149. System.err.println(e.getMessage());
  150. }
  151. }
  152.  
  153. public void lisaaAsiakas(String nimi) throws SQLException {
  154. try {
  155. pstatement = conn.prepareStatement("INSERT INTO Asiakas(nimi) VALUES (?)");
  156. pstatement.setString(1, nimi);
  157. pstatement.execute();
  158. } catch (SQLException e) {
  159. System.err.println(e.getMessage());
  160. }
  161. }
  162.  
  163. public void lisaaPaketti(int koodi, String nimi) throws SQLException {
  164. try {
  165. pstatement = conn.prepareStatement("SELECT id FROM Asiakas WHERE nimi=?");
  166. pstatement.setString(1, nimi);
  167. rset = pstatement.executeQuery();
  168. int id = rset.getInt("id");
  169.  
  170. pstatement = conn.prepareStatement("INSERT INTO Paketti(seurantakoodi, asiakas_id) VALUES (?, ?)");
  171. pstatement.setInt(1, koodi);
  172. pstatement.setInt(2, id);
  173. pstatement.executeUpdate();
  174. } catch (SQLException e) {
  175. System.err.println(e.getMessage());
  176. }
  177. }
  178.  
  179. public void lisaaTapahtuma(int koodi, String paikka, String kuvaus) throws SQLException {
  180. try {
  181. pstatement = conn.prepareStatement("SELECT id FROM Paketti WHERE seurantakoodi=?");
  182. pstatement.setInt(1, koodi);
  183. rset = pstatement.executeQuery();
  184. int pakettiId = rset.getInt("id");
  185.  
  186. pstatement = conn.prepareStatement("SELECT id FROM Paikka WHERE nimi=?");
  187. pstatement.setString(1, paikka);
  188. rset = pstatement.executeQuery();
  189. int paikkaId = rset.getInt("id");
  190.  
  191. pstatement = conn.prepareStatement("INSERT INTO Tapahtuma(kuvaus, paketti_id, paikka_id) VALUES (?, ?, ?)");
  192. pstatement.setString(1, kuvaus);
  193. pstatement.setInt(2, pakettiId);
  194. pstatement.setInt(3, paikkaId);
  195. pstatement.executeUpdate();
  196.  
  197. } catch (SQLException e) {
  198. System.err.println(e.getMessage());
  199. }
  200.  
  201. }
  202.  
  203. public void haePaketinTapahtumat(int koodi) throws SQLException {
  204. try {
  205. pstatement = conn.prepareStatement("SELECT id FROM Paketti WHERE seurantakoodi=?");
  206. pstatement.setInt(1, koodi);
  207. rset = pstatement.executeQuery();
  208. int pakettiId = rset.getInt("id");
  209.  
  210. pstatement = conn.prepareStatement("SELECT * from Tapahtuma WHERE paketti_id=?");
  211. pstatement.setInt(1, pakettiId);
  212. rset = pstatement.executeQuery();
  213.  
  214. //lisää looppiin paikan nimi jotenkin
  215. while (rset.next()) {
  216. String aika = rset.getString("aika");
  217. String paiva = rset.getString("paiva");
  218. String kuvaus = rset.getString("kuvaus");
  219.  
  220. System.out.print(paiva + " | " + aika + ", " + kuvaus);
  221. System.out.println("");
  222. }
  223. } catch (SQLException e) {
  224. System.err.println(e.getMessage());
  225. }
  226. }
  227.  
  228. public void haeAsiakkaanPaketit(String nimi) throws SQLException {
  229. try {
  230. pstatement = conn.prepareStatement("SELECT id FROM Asiakas WHERE nimi=?");
  231. pstatement.setString(1, nimi);
  232. rset = pstatement.executeQuery();
  233. int asiakasId = rset.getInt("id");
  234.  
  235. pstatement = conn.prepareStatement("SELECT id from Paketti WHERE Asiakas_id=?");
  236. pstatement.setInt(1, asiakasId);
  237. rset = pstatement.executeQuery();
  238. int pakettiId = rset.getInt("id");
  239.  
  240. pstatement = conn.prepareStatement("SELECT COUNT(*) as total from Tapahtuma WHERE Paketti_id=?");
  241. pstatement.setInt(1, pakettiId);
  242. rset = pstatement.executeQuery();
  243. int total = rset.getInt("total");
  244. //tällä hetkellä total antaa yhden paketin tapahtumien määrän kun tarkoitus olisi antaa yhden asiakkaan kaikkien pakettien tapahtumien määrän
  245. System.out.println(total);
  246. } catch (SQLException e) {
  247. System.err.println(e.getMessage());
  248. }
  249. }
  250.  
  251. public void haePaikanTapahtumat(String nimi) throws SQLException {
  252. pstatement = conn.prepareStatement("SELECT id FROM Paikka WHERE nimi=?");
  253. pstatement.setString(1, nimi);
  254. rset = pstatement.executeQuery();
  255. int paikkaId = rset.getInt("id");
  256. //päivämäärä input jotenkin
  257. }
  258. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement