# Allgemeiner Ratschlag zu meinem Programmunterfangen mit zentraler Datenbank



## ubuntu_88 (3. Jan 2010)

Guten Abend,

möchte eine Applikation zum verwalten von Seminaren schreiben. Die Datei müssen von unterschiedlichen Rechnern erreichbar sein.
Also brauch ich eine Datenbank, die ich zentral irgendwo hinlege.
Was für eine Datenbank kann man nehmen?
Und gibt es in Java irgendwie vorgefertige Klassen zur Datenverltung (sowas wie DataSet in C#) etc.
oder ne gute Anleitung .
In dem Programm soll es eine Eingabemaske geben und eine Ausgabemaske.

Nach längerem überlegen habe ich mich für JAVA entschieden, weil es die schon vor C# gab und mir irgendwie sympathischer ist.
die Applikation soll zwar nur auf Windows Rechner laufen, sonst könnte ich noch plattformunabhänig als Grund nennnen.


----------



## Landei (3. Jan 2010)

Kommt ganz drauf an. Erst mal musst du entscheiden, ob die Clients direkt mit der Datenbank reden sollen, oder über einen ApplicationServer (GlassFish, JBoss wären die low-budget-Varianten). Daten von und zur Datenbank übertragen läuft unter dem Stichwort "Persistenz", da gibt es auch wieder verschiedene Varianten (JPA, Hibernate, EBean). Oder, wenn das wegen drei Tabellen mit Kanonen auf Spatzen ist, kannst du ganz normal mit JDBC deine Objekte per Hand füllen. Um mit Fontane zu reden: Ein weites Feld!


----------



## homer65 (4. Jan 2010)

ubuntu_88 hat gesagt.:


> Was für eine Datenbank kann man nehmen?



Im Grunde genommen tut es da jede X-beliebige. Du hast die Qual der Wahl.
Ich persönlich nutze für kleine Anwendungen in der Regel MySQL.
Bei Java ist es nur wichtig, das es einen JDBC Treiber gibt.
Und den gibt es für fast alle Datenbanken.


----------



## ubuntu_88 (4. Jan 2010)

Ok nehm ich halt MySQL. Ist MySQL aber mehr in Verbindung mit PHP anzutreffen . Also im  Web-Bereich?

Aufjedenfall nochmal zum Datenmanagement.

Es sollen Datensätze hinzugefügt, gelöscht, bearbeitet und ausgelesen werden!
Also die üblichen Funktionen.
Wie mache ich das am besten um nicht so viel Arbeit zu haben?

Kann man die Daten zum bearbeiten,löschen in einer Tabelle darstellen oder muss man das in einzelnden Oberflächen machen ?
In dem Bereich habe ich noch nichts gemacht!


----------



## L-ectron-X (4. Jan 2010)

MySQL ist für eine kleine Anwendung vielleicht schon zu zu fett. Schau dir mal H2 an, da kannst du die Datenbank gleich mit der Anwenung ausliefern. Es braucht sich auch niemand eine MySQL-Datenbank auf seinen Rechner installieren.


----------



## homer65 (4. Jan 2010)

Hier mal ein Beispiel wie man connect zur Datenbank und insert in eine Tabelle machen kann.

```
package pack;
import java.sql.*;
public class MySQL 
{
	int rc = 0;
	private Connection con = null;
	ResultSet rs = null;
	public int Connect()
	{
		rc = 0;
		if (con == null)
		{
			try 
			{
				Class.forName("com.mysql.jdbc.Driver").newInstance();
				String server = "10.11.6.222";
				String port = "3306";
				String sub = "mysql";
				String url = "jdbc:mysql://"+server+":"+port+"/"+sub;
				String userid = "root";
				String password = "xxx";
				con = DriverManager.getConnection(url,userid,password);
			}
			catch (Exception e)
			{
				con = null;
				rc = 8;
				Protokol.write("MySQL:Connect:Exception:");
				Protokol.write(e.toString());
			}
		}
		return rc;
	}
	public int InsertSystablesSatz(SystablesSatz s,long datum)
	{
		rc = 0;
		String sql = "Insert into db2stat.tabstats";
		sql += " (datum,name,creator,dbname,tsname,cardf,npages,statstime,avgrowlen)";
		sql += " values (?,?,?,?,?,?,?,?,?);";
		try
		{
			PreparedStatement stmt = con.prepareStatement(sql);
			stmt.setLong(1,datum);
			stmt.setString(2,s.name);
			stmt.setString(3,s.creator);
			stmt.setString(4,s.dbname);
			stmt.setString(5,s.tsname);
			stmt.setFloat(6,s.cardf);
			stmt.setInt(7,s.npages);
			stmt.setString(8,s.statstime);
			stmt.setInt(9,s.avgrowlen);
			stmt.executeUpdate();
		}
		catch (SQLException e)
		{
			rc = 8;
			Protokol.write("MySQL:Insert:Exception:");
			Protokol.write(e.toString());
		}
		return rc;
	}
}
```


----------



## ubuntu_88 (4. Jan 2010)

Habe mir überlegt die Datenbank mit an das Programm zu hängen, weil das PRogramm nur von einer Person verwendet wird und wenn Sie mal zu Hause daran etwas machen möchte, kann die das Ding einfach kopieren.

Habt ihr da nen guten Tipp , welche Datenbank?
SQLLite?
H2 guck ich mir gerade mal an!
Muss der Anwender , dass Ding dann wahrscheinlich installieren oder ist das nur sonen Development Kram den man sich da auf der Seite lädt---- teste gerade


----------



## frapo (4. Jan 2010)

Wie L-ectron oben schon meinte: H2 Database Engine ist dafür eine Klasse Wahl. 

Gruß
frapo


----------



## ubuntu_88 (4. Jan 2010)

ok hab da nur gerade nen Problem.
Habs installiert. Das Programm hat ja ein Webinterface. 
Krieg immer die Meldung im Browser:

H2 Console

Sorry, remote connections ('webAllowOthers') are disabled on this server. 


Hab bei google und der H2 Dokumentation noch nichts gefunden

gelöst mit localhost gehts und mit 192.168.1.2(meine IP) nicht^^


----------



## ubuntu_88 (4. Jan 2010)

Wie geht den das hier?

Add the h2*.jar to the classpath (H2 does not have any dependencies) 

Habe ne Klasse erstellt:


```
import java.sql.*;

public class H2_Datenbank {
    public static void main(String[] a) throws Exception 
    {
    		Class.forName("org.h2.Driver");
    		Connection conn = DriverManager.
    			getConnection("jdbc:h2:~/test", "sa", "");

    		conn.close();
    }
}
```


----------



## frapo (5. Jan 2010)

Arbeitest du mit eclipse?

Einfach die entsprechende jar-Datei (z.B. h2-1.1.118.jar) in den BuildPath aufnehmen.

Gruß
frapo


----------



## ubuntu_88 (5. Jan 2010)

ja arbeite mit Eclipse. Wo ist den da ein BuildPath.

Habe links nur SystemLibrary , wo paar *.jars drinne sind und referenzierte Libarys^^

Finde nirgendwo nen BuildPath. Wo ist den der zu finden ?
Arbeite noch nicht so lange mit Eclipse.

Ehm wisst ihr vllt. wie man den Jigloo Builder sichtbar schalten kann.

Der ist aufeinmal verschwunden xD


----------



## frapo (6. Jan 2010)

ubuntu_88 hat gesagt.:


> Finde nirgendwo nen BuildPath. Wo ist den der zu finden ?
> Arbeite noch nicht so lange mit Eclipse.



Jedes Projekt hat einen BuildPath. Sehen kannst du den über verschiedene Wege: z.B. "Project | Properties | Java Build Path". Gehe dann auf Tab 'Libraries', dann auf 'Add Jars..'. Dort dann das Verzeichnis eingeben/auswählen, in dem deine h2.jar liegt.

Wenn du noch nicht lange mit eclipse arbeitest: guck dir mal die Hilfe an, da steht eine ganze Menge zu solch grundsätzlichen Dingen. 



			
				ubuntu_88 hat gesagt.:
			
		

> Ehm wisst ihr vllt. wie man den Jigloo Builder sichtbar schalten kann.
> Der ist aufeinmal verschwunden xD



Vielleicht hast du die Perspective geschlossen? Mit "Window | Open Perspective | Other" dürftest du alle Perspectives auswählen können, die du am Start hast, also auch Jigloo. 

Gruß
frapo


----------

