webForumDet fria alternativet

Java - Kod för att ansluta till en databas

Programmering

0 svar · 9 367 visningar · startad av Viktor

Medlem sedan aug. 20021 752 inlägg
Frågan#1
//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);
			}
		}
	}
}
248 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)