| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
Java+mySql hakuesimerkkiWhiz 10.03.04 12:06 Simppeli javalla tehty komentorivisofta joka demoo tauhkan noutoa mysql-kannasta
---- mysli.java ---- import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; /* Tämän ohjelmanpätkän tarkoitus on näyttää kuinka javalla haetaan mysql-kannasta dataa. Ohjelma testattu vain linux-ympäristössä, kommentteja toimivuudesta windowspuolella voi heittää alle. Jotta java+mysql toimisivat yhdessä, niin sinun tulee ensiksi hakea niinkutsuttu "ajuripaketti": ( http://www.mysql.com/downloads/api-jdbc-stable.html ) Pura paketti ja siirrä sieltä talteen .jar tiedosto (mysql-connector-java-xxxxx-stable-bin.jar). Lisää nyt classpathiisi tuo .jar tiedosto. Tässä esimerkkinä minun classpathini: /usr/local/java/lib/mysql-connector-java-3.0.11-stable-bin.jar:./ Esimerkissä käytän seuraavanlaista taulua johon on tallennettuna ihmisten puhelinnumeroita, toki voit käyttää mitä tahansa muutakin jo valmista taulua jos siltä tuntuu. taulun rakenne: +--------+-------------+------+-----+---------+ | Field | Type | Null | Key | Default | +--------+-------------+------+-----+---------+ | number | varchar(15) | | PRI | | | nick | varchar(15) | | | | | adtime | datetime | YES | | NULL | +--------+-------------+------+-----+---------+ Mysql kuuntelee oletuksena ainoastaan unix-socketteja, eli sinun täytyy sallia yhteydet ulkopuolelta mysql-palvelimeesi. Tämä tapahtuu lisäämällä '#' eli kommenttimerkin skip-networking -rivin eteen mysql:n asetustiedostossa. Muistathan että ei kuitenkaan ole järkevää pitää mysliä auki koko maailmaan, niin on hyvä muurata ulkomaailmaan umpeen tuokin reikä. Musitathan myös että sinun tulee antaa käyttäjälle oikeus ottaa muualtakin kuin localhostista yhteys kantaan, jotta homma toimisi. Kääntö onnistuu ihan "javac mysli.java" ja suoritus "java mysli", kunhan muistat vaan että java ja javac löytyvät PATHista ja CLASSPATHista löytyy se ajuripaketti. */ public class mysli { public static void main (String[] args) { // asetukset String dbServer = "osoite"; String dbUser = "username"; String dbPass = "salasana"; String dbName = "kannan_nimi"; /* Virheenkäsittely, eli javassa aina "kokeillaan" (try), että josko jokin komennon suoritus onnistuisi. Jos suoritus epäonnistuu niin sitten "kaapataan" (catch) se virheilmoitus mikä sieltä tulee */ try { // Esitellään tietokannan ajuri, tälläkertaa mysql Class.forName("com.mysql.jdbc.Driver"); // Luodaan Connection(yhteys)-tyyppinen luokka DriverManager-luokan avulla Connection conn = DriverManager.getConnection("jdbc:mysql://"+dbServer+"/"+dbName+"?user="+dbUser+"&password="+dbPass); // Valmistellaan kysely Statement stmt = conn.createStatement(); // Luodaan resultset tyyppinen olio johon otetaan talteen kyselyn tuottama data. ResultSet rs = stmt.executeQuery("SELECT nick, number FROM phonenumbers ORDER BY nick LIMIT 10;"); // Käydään recordsettiä läpi niin kauan kuin seuraava tietue löytyy while ( rs.next() ) { /* oliolla rs on funktio getString jolla voi palauttaa tämänhetkisen rivin tietyn kentän arvon. esim rs.getString("kenttä"); */ System.out.println(rs.getString("nick")+": "+rs.getString("number")); } // Suljetaan yhteydet ja recordsetit. rs.close(); stmt.close(); conn.close(); } catch (Exception ex) { // Jos tapahtui erhe, niin kerrotaan siitä. System.out.println("Exception: " + ex); } } } maka78 23:25 18.5.04 Kyllähän tuo tuntuu toimivan myös Windows ympäristössä :) Tombio 09:06 9.1.06 Vaihtoehtoisesti voisi catchia SQLExceptionin ja tulostaa siitä sitten stack tracen? Vaikkakin pelkkä Exception ajaa saman asian. Makuasioitahan nämä. |
![]() Haku
|