# Java MS Access Verbindung



## deddeda (24. Nov 2014)

Hallo zusammen

Ich bin noch Java-Anfänger und versuche nun per Java-Code einträge in einer MS Access Datenbank zu erstellen. Ich habe Code im Internet gefunden und den entsprechend an meine Wünsche angepasst. Die Daten der DB kann ich ausgeben jedoch keine neuen Einträge erstellen. 
Immer wenn ich den Code ausführe wir im Laufwerk ein neues File hinzugefügt, es heisst gleich wie die DB und ist eine LACCDB datei. Diese Datei kann ich aber mit meinem Computer nicht öffnen da sie wohl 64-Bit ist. Was kann ich tun um Daten der DB hinzuzufügen? 

[Java]package test;

import java.sql.*;
public class UserLogin {
public static void main(String[] args) {
try {
// Load MS accces driver class
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

// C:\\databaseFileName.accdb" - location of your database 
String url = "jdbcdbcriver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + "T:\\Mitarb\\Inl13\\INL\\Dimitri Murri\\Simple.accdb";

// specify url, username, pasword - make sure these are valid 
Connection conn = DriverManager.getConnection(url, "", "");


Statement s = conn.createStatement();
s.execute("select name from Simple");
s.execute("INSERT INTO Simple (ID, name, saldo)  Values(3, 'test', '25')"); // insert some data into simple

ResultSet rs = s.getResultSet(); // get any ResultSet that came from our query
if (rs != null) // if rs == null, then there is no ResultSet to view
while ( rs.next() ) // this will step through our data row-by-row
{
/* the next line will get the first column in our current row's ResultSet 
 as a String ( getString( columnNumber) ) and output it to the screen */ 
System.out.println("Data from column_name: " + rs.getString(1) );
}

System.out.println("Connection Succesfull");
} catch (Exception e) {
System.err.println("Got an exception! ");
System.err.println(e.getMessage());

}}}[/Java]

Vielen Dank und Gruss


----------



## Joose (24. Nov 2014)

Ich habe nur mal nach "LACCDB" gegoogelt.

Gefunden habe ich diesen Beitrag: Wenn die Access DB nicht sauber geschlossen wird dann bleibt dieses Lockfile erhalten.

Was mir an deinem Code aufgefallen ist:
Du führst zuerst ein SELECT aus, dann fügst du per INSERT Daten ein und dann gibst du erst die Daten vom SELECT aus.
Und das ResultSet wird von dir sowieso nicht geschlossen!

Ändere doch die Abfolge auf

 Daten einfügen
 Daten selektieren
 Daten ausgeben
 Statements, ResultSet, Verbindung schließen

[ot]
Habe das Thema mal in den Datenbank Bereich verschoben, da es hier besser hinpasst. (beim nächsten mal selber kontrollieren 
[/ot]


----------



## deddeda (24. Nov 2014)

Vielen Dank für die Hilfe, nun funktioniert alles.
Ich habe aber noch eine andere Frage. Ist es möglich ein Attribut z.B. private String test = "Hallo"; in die Datenbank zu schreiben?


----------



## Joose (24. Nov 2014)

Natürlich ist das möglich, aber du solltest dir zuerst die Grundlagen von Java aneignen bevor du so richtig in die Datenbankprogrammierung einsteigst.


----------



## deddeda (24. Nov 2014)

Ich bin gerade dabei die Basics zu lernen, ich mache eine Lehre als Informatiker.


----------



## Joose (24. Nov 2014)

Ja dann bleibe dabei und lerne + übe die Basics.
Arbeite dich erst Schritt für Schritt an deine Ziele heran


----------



## deddeda (24. Nov 2014)

Ja klar, das mach ich auch. Nur bin ich gerade abhängig davon und kann ohne die Lösung nicht weiter arbeiten...


----------



## Joose (24. Nov 2014)

deddeda hat gesagt.:


> Ja klar, das mach ich auch.





deddeda hat gesagt.:


> Nur bin ich gerade abhängig davon und kann ohne die Lösung nicht weiter arbeiten...



Diese beiden Sachen widersprechen sich eigentlich. Entweder "Ja klar, ich lerne die Grundlagen und übe sie. Werde mich auch Schritt für Schritt an die OOP und vertiefende Java Themen rantasten" oder "Ich will etwas machen, mich aber nicht großartig mit den Grundlagen aufhalten".

Das was du wahrscheinlich suchst ist eine einfache Stringverkettung und das ist eben Teil der Grundlagen!


----------



## deddeda (24. Nov 2014)

Ja das klingt wiedersprüchlich ich weiss... Also ich lerne in der Schule OOP (Java) seit August, pro Woche sind es 4 Lektionen Unterricht, also noch nicht viel. Wir haben bis jetzt Dinge angeschaut wie: UML, Objekterzeugung, Attribute und Parameter, Beziehungen und jetzt gerade sind wir an der Vererbung. Leider haben wir das Thema Datenbanken und Java erst in gut einem Jahr. Doch leider bin ich gerade dabei ein Programm zu schreiben für welches ich kentnisse in der Datenbankprogrammierung brauche. Bis jetzt hat alles recht gut funktioniert ausser, dass ich den INhalt eines Objekts noch nicht in die DB schreiben kann. Da ich einfach nicht weiss wie es funktioniert...


----------



## Joose (24. Nov 2014)

deddeda hat gesagt.:


> Doch leider bin ich gerade dabei ein Programm zu schreiben für welches ich kentnisse in der Datenbankprogrammierung brauche.



Brauchst du dazu wirklich eine Datenbank? Würde eine Speicherung per Datei nicht voerst auch helfen?
Warum willst du ein Programm schreiben wo du eine Technik einsetzen "musst" die du nicht kennst, noch nicht gelernt hast und wofür die Grundlagen noch nicht richtig sitzen? -> "Wie baue ich mir meinen String dynamisch zusammen?"

Klar man kann sich die Sachen natürlich selber beibringen mit Hilfe des Internets usw. (zeigt natürlich Ehrgeiz und Eigeninitiative) aber dann sollte man trotzdem Schritt für Schritt vorgehen und die Grundlagen nicht außer Acht lassen (Arbeiten mit Strings)!


----------



## deddeda (25. Nov 2014)

Ja, es muss eine Datenbank sein. Ich habe von meinem Auftraggeber Vorgaben bekommen und die muss ich einhalten. Klar, das Programm ist recht anspruchsvoll für mich... Doch irgendwie muss es ja zu schaffen sein und leider habe ich keine andere Person um zu fragen, sonst hätte ich nicht hier im Forum gefragt.


----------

