Meddelande

Minska
No announcement yet.

Java - Kod för att ansluta till en databas

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Java - Kod för att ansluta till en databas

    [kod]
    //Jag tänkte med detta exempel visa hur man ansluter till,
    //hämtar data, tar bort data och skriver lite data till en databas via Java.
    //Det som jag visar här är väldigt grundläggade och jag rekomenderar
    //att ni efter att ha fått detta att fungera tittar vidare på t.ex PreparedStatement

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;

    public class DBTest
    {
    public static void main(String[] args)
    {
    //en connection class för att hålla reda på vår connection till databasen.
    Connection conn=null;
    //ett statement behövs för att ställa frågan till databasen.
    Statement stmnt=null;
    //ett resultset behövs för att hålla svaret vi får från databasen.
    ResultSet rs=null;
    //vårt användarnamn för databasen.
    String username="super_user";
    //vårt lösenord för databasen.
    String password="super_password";
    //flera exceptions kommer att kunna kastas under databas kommunikationen
    try
    {
    //Ladda databas drivrutinen, kolla i dokumentationen
    //om exakt vad den heter och se till att den finns i din
    //classpath. I detta exempel ansluter jag till en mysql databas
    //och använder därför deras drivrutin.
    Class.forName("com.mysql.jdbc.Driver");
    //för att skapa och öppna en connection så måste vi först specificera
    //vilket protokoll vi vill använda och sedan vilken typ av drivrutin,
    //i detta fall vill vi ansluta via jdbc och till en mysql databas, se
    //dokumentationen för din databas för exakt information om vad man ska
    //skriva här. Efter första delen följer adressen till servern där databasen
    //finns och sist kommer databas namnet, i detta fall test.
    //Sist skickar man med användarnamn och lösenord för databasen.
    conn=DriverManager.getConnection("jdbc:mysql://192.168.0.12/test",username,password);
    //skapa ett statement så vi kan ställa frågor till databasen.
    stmnt=conn.createStatement();
    //Vi börjar med att försöka lägga till något i databasen, om det lyckas så
    //retunerar executeUpdate antalet rader som har blivit updaterade.
    if(stmnt.executeUpdate("INSERT INTO member(id,fname,lname) VALUES(4545,'Viktor','Anka')")!=1)
    {
    System.out.println("Database Error, no row was inserted");
    }
    else
    {
    System.out.println("Success, row inserted");
    }
    //sen försöker vi hämta data från databasen
    rs=stmnt.executeQuery("SELECT id, fname, lname FROM member");
    //så länge vi kan flytta fram i vårt resultset så finns det fler rader
    while(rs.next())
    {
    //här hämtar vi ut värdet från kolumnen id på nuvarande rad.
    System.out.println("Member ID: "+rs.getString("id"));
    //här hämtar vi ut värdet från kolumn nr 2 (fnamn i detta fall) och sedan
    //värdet från kolumn lname. Tänk på att när man använder kolumn index så är
    //det 1 baserat, dvs första kolumnen har id 1.
    System.out.println("Name: "+rs.getString(2)+" "+rs.getString("lname"));
    }
    //Och sen tar vi bort raden vi just skrev till databasen
    if(stmnt.executeUpdate("DELETE FROM member WHERE id=4545")!=1)
    {
    System.out.println("Database Error, no row was deleted");
    }
    else
    {
    System.out.println("Success, row deleted");
    }
    }
    catch(ClassNotFoundException cnfe)
    {
    cnfe.printStackTrace(System.err);
    }
    catch(SQLException sql)
    {
    sql.printStackTrace(System.err);
    }
    finally
    {
    //Vi vill att anslutningen alltid ska stängas och sätter därför
    //denna kod i ett finally block som alltid körs oavsätt om ett
    //exception inträffar. Tyvärr kan ett exception även inträffa
    //när vi stänger så vi måste fånga det också...
    try
    {
    conn.close();
    }
    catch(Exception e)
    {
    e.printStackTrace(System.err);
    }
    }
    }
    }
    [/kod]
Working...
X