java + sql

ööööh

Pitäis vähän kouluhommia saada tehtyä ja tuli ISO ongelma...
ELi:
osaako joku sanoa, että miten sisällytetään mysql(tai sql) komento java koodiin? Select toimii mutta haluaisin insert-toiminnon myös. Tarkoitus olisi siis, että javalla kysyttäis erikseen yksi(tai kaikki) muuttuja ja jotka vietäisii sitten sql-komentoon? Siis kysytään ja otetaan talteen syöte javalla mutta miten sen saa SQL:n sekaan, siten että tietokantaan kohdistuvan sql-komennon yksi muuttuja olisi käyttäjän annettavissa?

Eli koska edellinen oli sekavasti niin laitan vähän esimerkkiä, jos siitä olisi ymmärtämisessä apua.
SQL:llä se toimisi näin (tämmöinen toimii mutta harva käyttäjä osaa/haluaa antaa SQL-komentoja)
insert into henkiloTaulu values ('Seppo', 'Semmonen');

ja haluaisin että javalla kysyttäis:
1.Lisää uusi henkilö
anna valinta> 1

Anna etunimi> Seppo

Anna sukunimi> Semmonen

Uusi henkilö lisätty tietokantaan

Eli jos tälläisestä olisi jossain esimerkkiä tai joku jaksaisi laittaa vähän mallia niin kiitos hänelle.

3

687

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Piru_
    • avusta

      jep, alkoi homma valkenemaan kun sain esimerkin. Kiitos vaivannäöstä!!

    • I.Proqatlis

      Minulla on valmis esimerkki tästä aiheesta. Olen tehnyt jalkapallosovelluksen, jossa mm. kirjataan tuloksia java-käyttöliittymällä ja annetut tiedot viedään MySQL-tietokantaan.

      Seuraavassa on koodi, mitä tapahtuu, kun tiedot on annettu ja klikataan hyväksymispainiketta.

      Hieman taustaa: minulla on Swing-ikkuna, jossa annetaan seuraavat tiedot comboboxeissa:

      - pelipäivä (vuosi, kuukausi ja päivä erillisissä comboboxeissa)
      - minkä maan sarjasta on kysymys
      - mikä sarjataso
      - kotijoukkue
      - vierasjoukkue
      - kotijoukkueen tekemät maalit
      - vierasjoukkueen tekemät maalit

      Kun nuo tiedot ovat valmiita, niin suoritetaan actionPerformed, jossa käyttöliittymästä haetaan tietokantaan vietävät tiedot ja tehdään insert-operaatio.

      Ydin tässä on, että stringmuuttuja sqlKirjaaTulos saa arvokseen insert-lauseen, jossa muuttujat esitetään kysymysmerkkeinä. Ennen varsinaisen insertin suorittamista jokaiselle muuttujalle pitää antaa arvo, esim.

      pstmt.setInt(4, koti);

      tarkoittaa, että neljäs muuttuja insert-lauseessa saa arvokseen koti-muuttujassa olevan arvon, joka on integer-tyyppinen.

      Tämä on asiayhteydestään irrotettu koodinpätkä, mutta menetelmä tiedon kirjoittamiseksi tietokantaan käynee selville.

      -------------------------------------------------------------------------------------------------

      public void actionPerformed(ActionEvent klikkaus) {

      /* *** Tarkista, että eri joukkueet on valittu! *** */

      int koti = joukkueLista.joukkuenroPalauta( kotiJoukkueComboBox.getSelectedIndex() );
      int vieras = joukkueLista.joukkuenroPalauta( vierasJoukkueComboBox.getSelectedIndex() );

      if ( koti == vieras ) {
      JOptionPane.showMessageDialog(
      null,
      "Joukkue ei voi pelata itseään vastaan.",
      "Korjaa virhe!",
      JOptionPane.ERROR_MESSAGE );

      return;
      }


      /* *** Muodosta päiväys comboboxien arvoista *** */

      String vuosi = vuosiComboBox.getSelectedItem().toString();
      String paivays = vuosi "-";
      int kuukausi = kuukausiComboBox.getSelectedIndex() 1;

      if (kuukausi < 10)
      paivays = paivays "0";

      paivays = paivays kuukausi "-";

      int paiva = paivaComboBox.getSelectedIndex() 1;

      if (paiva < 10)
      paivays = paivays "0";

      paivays = paivays paiva;

      /* *** Päiväys on kentässä paivays muodossa yyyy-mm-dd *** */
      /* *** Tee siitä hyväksyttävä java.sql.Date -muotoinen päiväys *** */

      java.sql.Date sqlPaivays = java.sql.Date.valueOf(paivays);


      /* *** Muodosta insert-lause tuloksen kirjaamiseksi *** */

      String sqlKirjaaTulos =
      "INSERT INTO tulokset "
      "( maa, sarja, pelipaiva, kotijoukkue, vierasjoukkue, kotimaalit, vierasmaalit ) "
      "VALUES ( ?, ?, ?, ?, ?, ?, ? )";


      try {
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      Connection yhteys = DriverManager.getConnection(meidanTietokanta, "", "");
      PreparedStatement pstmt = yhteys.prepareStatement(sqlKirjaaTulos);


      /* *** Arvot kaikille insertissä oleville muuttujille *** */

      /* *** setInt kokonaisluvuille *** */
      /* *** setString merkkijonoille *** */
      /* *** setDate päiväyksille *** */

      pstmt.setInt(1, maaNro);
      pstmt.setInt(2, sarjaNro);
      pstmt.setDate(3, sqlPaivays);
      pstmt.setInt(4, koti);
      pstmt.setInt(5, vieras);
      pstmt.setInt(6, kotiMaalitComboBox.getSelectedIndex() );
      pstmt.setInt(7, vierasMaalitComboBox.getSelectedIndex() );


      /* *** Kirjaa rivi tietokantaan *** */

      pstmt.executeUpdate();
      pstmt.close();

      yhteys.close();


      /* *** Informoi onnistuneesta suorituksesta *** */

      JOptionPane.showMessageDialog(
      null,
      "Tulos on kirjattu",
      "OK",
      JOptionPane.INFORMATION_MESSAGE);

      kirjaaButton.setEnabled(false);

      }

      /* *** Virhe?! *** */

      catch (SQLException s) {
      jotainMeniPieleen =
      "SQL-virhe kirjattaessa tulosta:\n"
      s.toString() "\n"
      s.getErrorCode() "\n"
      s.getSQLState();

      JOptionPane.showMessageDialog(
      null,
      jotainMeniPieleen,
      "VIRHE!!!",
      JOptionPane.ERROR_MESSAGE);
      }

      catch (Exception e) {
      jotainMeniPieleen = "Virhe:\n" e.toString() "\n" e.getMessage();

      JOptionPane.showMessageDialog(
      null,
      jotainMeniPieleen,
      "VIRHE!!!",
      JOptionPane.ERROR_MESSAGE);
      }

      } // end of actionPerformed

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Tällä kertaa Marinia kadehtii Minäminä Päivärinta

      Kokoomuksen tyhjäntoimittelija itkeä tuhertaa, kun kansainvälinen superstaramme ei leiki hänen kanssaan. Oikean puoluee
      Maailman menoa
      453
      2331
    2. Miksi jollain jää "talvi päälle"

      Huvittaa kastoa ullkona jotain vahempaa äijää joka pukeutuu edelleen kun olisi +5 astetta lämmittä vaikka on helle keli
      Maailman menoa
      238
      2076
    3. Miksi koulut pakottavat

      Lapset uimaan sekaryhmänä? Murrosikäiset tunnetusti häpeilevät vartalossa tapahtuvia muutoksia. Tulee turhia poissaoloja
      Maailman menoa
      189
      1592
    4. Minua itkettää tämä tilanne

      Meidän pitäisi jutella. Eikö niin? Miehelle.
      Ikävä
      109
      1581
    5. Mitkä oli suurimmat

      Syyt mihin hänessä ihastuit alussa ja pikkuhiljaa tunteiden edetessä
      Ikävä
      53
      1355
    6. Suomen Pallolitto: Tasoryhmät lasten jalkapallossa - Erätauko-tilaisuus ma 20.5.2024

      Tasoryhmät lasten ja nuorten jalkapallossa herättävät paljon keskustelua. Mitä tasoryhmät ovat ja mikä on niiden tarkoit
      Suomi24 Blogi ★
      3
      1351
    7. Mitä et hyväksy miehessä/naisessa josta olet kiinnostunut?

      Itse en halua, että miehellä olisi lapsia!
      Ikävä
      152
      1335
    8. Se katse silloin

      Oli hetki, jolloin katseemme kohtasivat. Oli talvi vielä. Kerta toisensa jälkeen palaan tuohon jaettuun katseeseen. Tunt
      Ikävä
      52
      1226
    9. Minulla oli tunteita

      Tein itsestäni pellen. Sait hyvät naurut ja minä 💔
      Ikävä
      68
      1105
    10. Susanne Päivärinta kirjassaan: Sannalla nousi valta päähän, Big Time!

      Päivärinta toteaa ettei ole nähnyt kenenkään muuttuvan niin totaalisesti kuin Marinin, eikä siis todellakaan parempaan s
      Maailman menoa
      101
      1069
    Aihe