Java+mySql hakuesimerkki

Whiz 10.03.04 12:06

Simppeli javalla tehty komentorivisofta joka demoo tauhkan noutoa mysql-kannasta

 Tekstiversio  Arvo: 7 (8 ääntä)  Äänestä: +  -
---- 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ä.