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.
java + sql
3
739
Vastaukset
- Piru_
tossa miten yhdisteään databaseen
http://zamov.online.fr/EXHTML/JAVA/JAVA_376038.html
tuolla oikeastaan ihan tietokannan asentamisesta kantahakuihin asti.
Vaikka sivu on pitkä, niin lopussa löytyy koko luoka koodi, millä tehdään kantaan muutoksia
http://www.developer.com/java/data/article.php/3417381 - 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
Oletko kertonut jo muille tunteistasi?
Ystävillesi esimerkiksi? Minä en ole vielä kertonut kenellekään tästä meidän jutusta.774622- 1801897
- 1241590
- 1241125
Miten minusta tuntuu että kaikki tietää sun tunteista mua kohtaan
Paitsi suoraan minä itse, vai mitä hlvettiä täällä tapahtuu ja miksi ihmiset susta kyselee minulta 🤔❤️161061- 351036
- 78933
- 52896
Hyvää huomenta!
Mietin miten suhtaudut minuun, jos kerron tunteista. Voinko enää sen jälkeen olla samassa paikassa kanssasi, jos koet as78872- 4828