MySQL Fragen zu BLOB zu byte[], Date zu java.util.Date uvm.

Chrno

Mitglied
Hi,

ich programmiere gerade eine Stundenplanverwaltung bei der die Daten in einer MySQL Datenbank liegen.

Jetzt habe ich paar Probleme:
1. Wie caste ich Byte[] zu BLOB und umgekehrt? Oder gibt es ein besseren Datentyp um reine nuller und einser abzuspeichern?

2. Wie soll ich am schlausten mit (MySQL)Date umgehen? soll ich es in java.util.Date abspeichern oder was anderes? Soll ein Reines Datum sein nämlich die Gültigkeit einer Schulstunde.

3. Wie bekomme ich am besten den letzten AUtO INCREMENT Key raus?
Möglichkeit:
SQL:
SELECT MAX(id*****) FROM *****
gibt es eine bessere?

Habe die Datenbank (DB Designer) angehängt.
Kann mir jemand helfen? Verbesserungsvorschläge nehme ich gerne an.:)
THX
Chrno
 

Anhänge

  • Stundenplanverwaltung.png
    Stundenplanverwaltung.png
    46,7 KB · Aufrufe: 39
Zuletzt bearbeitet:
G

Gast2

Gast
Jetzt habe ich paar Probleme:
1. Wie caste ich Byte[] zu BLOB und umgekehrt? Oder gibt es ein besseren Datentyp um reine nuller und einser abzuspeichern?

Wofür brauchst du denn den byte[]? Kannst statt einem BLOB natürlich auch einfach z.B. einen Hex String verwenden und daraus nachher die Bitmaske zurück rechnen: a5c47e -> 101001011100010001111110

2. Wie soll ich am schlausten mit (MySQL)Date umgehen? soll ich es in java.util.Date abspeichern oder was anderes? Soll ein Reines Datum sein nämlich die Gültigkeit einer Schulstunde.

java.sql.Date wäre da passender.

3. Wie bekomme ich am besten den letzten AUtO INCREMENT Key raus?
Möglichkeit:
SQL:
SELECT MAX(id*****) FROM *****
gibt es eine bessere?

[c]SELECT id FROM table ORDER BY id desc LIMIT 1[/c]? ;)

Wenn du nur wissen willst welche Id der grade erzeugte Datensatz bekommen hat gibt es da allerdings bessere Lösungen. Kommt halt drauf an was du wissen/machen möchtest.
 

Chrno

Mitglied
Wofür brauchst du denn den byte[]? Kannst statt einem BLOB natürlich auch einfach z.B. einen Hex String verwenden und daraus nachher die Bitmaske zurück rechnen: a5c47e -> 101001011100010001111110
Ok aber wie sieht denn dann das casten aus?
geht das?
Java:
prepStatement.setBlob(9, Blob.class.cast(u.getWiederholung()));
//u.getWiederholung()=bytre[]

java.sql.Date wäre da passender.
Ok werde es in angriff nehmen.

[c]SELECT id FROM table ORDER BY id desc LIMIT 1[/c]? ;)

Wenn du nur wissen willst welche Id der grade erzeugte Datensatz bekommen hat gibt es da allerdings bessere Lösungen. Kommt halt drauf an was du wissen/machen möchtest.
Nach dem ich die Daten in die Datenbank geschrieben habe, brauche ich den PK um ihn in das Objekt zu schreiben.
 
G

Gast2

Gast
Ok aber wie sieht denn dann das casten aus?
geht das?
Java:
prepStatement.setBlob(9, Blob.class.cast(u.getWiederholung()));
//u.getWiederholung()=bytre[]

Erm... der Hex String ist ja nur ein String, also VARCHAR. Die Frage ist "Wofür brauchst du ein byte[]"? Was ist u.getWiederholung() - ein byte[]? Wieviele bytes?

Nach dem ich die Daten in die Datenbank geschrieben habe, brauche ich den PK um ihn in das Objekt zu schreiben.

Ich würde das ganze mit so machen [c]connection.prepareStatement("INSERT INTO ...", Statement.RETURN_GENERATED_KEYS);[/c] Nach dem Ausführen des Statements dann mit getGeneratedKeys() die ID abfragen.
 

Chrno

Mitglied
Erm... der Hex String ist ja nur ein String, also VARCHAR. Die Frage ist "Wofür brauchst du ein byte[]"? Was ist u.getWiederholung() - ein byte[]? Wieviele bytes?
Das weiß ich selber noch nicht so genau, will halt irgendwie ein Attribut haben was die Wiederholung Speichert z.B. das ganze Schuljahr, ein bestimmter Zyklus oder nur 4 Wochen usw. Und da dachte ich mir da ich noch nicht weiß wie ich es im Endeffekt umsetze, mache ich einfach einen Datenstrom so wie beim Header eines Protokolls, wie ich es dann mache ist mir überlesen^^

Ich würde das ganze mit so machen [c]connection.prepareStatement("INSERT INTO ...", Statement.RETURN_GENERATED_KEYS);[/c] Nach dem Ausführen des Statements dann mit getGeneratedKeys() die ID abfragen.
Ja Super Danke.

Edit:
So?
Java:
u.setIdUntericht(prepStatement.getGeneratedKeys().getInt(0));
 
Zuletzt bearbeitet:
G

Gast2

Gast
Das weiß ich selber noch nicht so genau, will halt irgendwie ein Attribut haben was die Wiederholung Speichert z.B. das ganze Schuljahr, ein bestimmter Zyklus oder nur 4 Wochen usw. Und da dachte ich mir da ich noch nicht weiß wie ich es im Endeffekt umsetze, mache ich einfach einen Datenstrom so wie beim Header eines Protokolls, wie ich es dann mache ist mir überlesen^^

Wenn es sich nicht irgendwie vermeiden lässt vermeide ich in Datenbanken grundsätzliche (B)LOBs. Überleg die mal was du wirklich speichern musst um die Wiederholungen abzubilden. Kommt auch sehr stark drauf an wie flexibel die Planung sein muss.

Ja Super Danke.

Edit:
So?
Java:
u.setIdUntericht(prepStatement.getGeneratedKeys().getInt(0));

Fast... schau mal hier: http://www.java-forum.org/datenbankprogrammierung/98500-id-rueckgabe-insert.html#post626456
 

Chrno

Mitglied
Oh man das ist eine gut Frage,vieleicht sollte ich einfach ein int feld mit der anzahl an wochen nehmen erleichtert es um einiges^^

Hier dann mal der gesammte Codeder insert methode:
Java:
    public void create(Unterichtsstunde u) {
        PreparedStatement prepStatement;
        String sql;
        ResultSet res;
        if (dbConnection != null) {
            try {
                sql = "INSERT INTO unterichtsstunde (klasse,zeit,wochentag,raum,lehrer,fach,von,bis,wiederholung) VALUES(?,?,?,?,?,?,?,?,?);";
                prepStatement = dbConnection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
                prepStatement.setInt(1, u.getKlasse().getIdKlasse());
                prepStatement.setInt(2, u.getZeit().getIdZeit());
                prepStatement.setInt(3, u.getWochentag().getTageID());
                prepStatement.setInt(4, u.getRaum().getIdRaum());
                prepStatement.setInt(5, u.getLehrer().getIdLehrer());
                prepStatement.setInt(6, u.getFach().getIdFach());
                prepStatement.setDate(7, u.getVon());
                prepStatement.setDate(8, u.getBis());
                prepStatement.setInt(9, u.getWiederholung());
                prepStatement.executeUpdate();
                res = prepStatement.getGeneratedKeys();
                res.next();
                u.setIdUntericht(res.getInt(1));
                prepStatement.close();
            } catch (SQLException ex) {
                Logger.getLogger(UnterichtsstundeDAO.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M MongoDb Versändnis Fragen: ( multiserver, morphia/morphium ) Datenbankprogrammierung 0
D MySQL Grundsätzliche Fragen zu MySQL Datenbankprogrammierung 3
D Allgemeine Fragen Datenbankprogrammierung 2
J Datenbank für Fragen/ Antworten Datenbankprogrammierung 7
J Anfänger Fragen zu JPA Datenbankprogrammierung 6
E MySQL 2 Fragen zur Syntax von SQL-Abfragen Datenbankprogrammierung 8
S Fragen zur DB-Programmierung Datenbankprogrammierung 6
W Fragen zu Datenbanksystemen Datenbankprogrammierung 10
S Allgemeine Fragen zu Hibernate Datenbankprogrammierung 2
P Noch drei Fragen zu JPA Datenbankprogrammierung 5
M komplettNoob-Fragen: MySQL mit NetBeans nutzen Datenbankprogrammierung 13
-MacNuke- Diverse Fragen zu ORM (Hibernate, JPA, etc.) Datenbankprogrammierung 6
W Zwei Fragen über JDBC und MySQL Datenbankprogrammierung 2
S MySQL - ein paar Fragen ;) Datenbankprogrammierung 11
A Weitere Fragen zu hsqldb Datenbankprogrammierung 6
G Ein paar Fragen zur DB-Programmierung Datenbankprogrammierung 18
G 2 fragen zu java <-> mysql Datenbankprogrammierung 4
krgewb Breite und Höhe von Blob Datenbankprogrammierung 7
H Oracle Resize eines Images in Java und Rückgabe des Image als BLOB an die Oracle Datebank Datenbankprogrammierung 14
H Java Class zum komprimieren von Jpeg-Images zum Einbinden in Oracle DB - Bild als blob (in und out) Datenbankprogrammierung 23
D MySQL Sicherheitslücke als Blob? Datenbankprogrammierung 3
buggy84 MySQL BLOB Geschwindigkeit Datenbankprogrammierung 16
L H2 Blob Dateien in der DB komprimieren? Datenbankprogrammierung 8
L H2 Blob Spalte im Client anzeigen Datenbankprogrammierung 2
E Wie kann man das Problem mit der BLOB-Spalte lösen? Datenbankprogrammierung 1
E Wie kann ich textdateien, die als BLOB abgespeichert sind, aus der Datenbanktabelle auslesen? Datenbankprogrammierung 23
E Wie kann man BLOB-Spalten in DB2 einfügen? Datenbankprogrammierung 9
R MySQL Blob aus DB auslesen und einer Tabelle ausgeben Datenbankprogrammierung 7
J BLOB to ImageIcon? Datenbankprogrammierung 3
Kenan89 Sinnvoller URL oder BLOB? Datenbankprogrammierung 2
F H2:Wie kann man insert eine Reihe "int" wert als blob in table? Datenbankprogrammierung 12
N Leeres Blob in ein PreparedStatement eintragen Datenbankprogrammierung 2
D Blob MimeTyp auslesen Datenbankprogrammierung 2
P MySQL Objekt aus BLOB auslesen Datenbankprogrammierung 3
M Problem Array in BLOB-Feld in DerbyDB zu speichern Datenbankprogrammierung 5
C MP3 in DB als Blob, wieder auslesen und als MP3 speichern??? Datenbankprogrammierung 8
S BLOB in Datei speichern Datenbankprogrammierung 8
S Hibernate Blob mit Stream speichern Datenbankprogrammierung 3
V PostgreSQL langsam (Blob) Datenbankprogrammierung 10
G Blob aus Oracle-Datenbank Datenbankprogrammierung 2
O Vector als Blob in Oracle Datenbank speichern Datenbankprogrammierung 3
D Insert Oracle BLOB Datenbankprogrammierung 1
B Java Derby Datenbank mit CLOB & BLOB Datenbankprogrammierung 5
J Bild aus Mysql Blob in Webseite einbinden Datenbankprogrammierung 9
H Blob erzeugen Datenbankprogrammierung 2
T Inhalt von Blob in Console ausgeben Datenbankprogrammierung 2
G Sybase IMAGE-Daten zu MySQL als BLOB schreiben. Datenbankprogrammierung 2
T Datei (Blob) mit verknüpfter Software öffnen? Datenbankprogrammierung 4
G File nach Blob konvertieren ? Datenbankprogrammierung 6
G JPEG to BLOB Datenbankprogrammierung 7
H File into blob Datenbankprogrammierung 3
A Blob in Oracle-DB einfügen (veraltete Methode) Datenbankprogrammierung 3
EagleEye Blob -> backup Datenbankprogrammierung 6
Y Problem mit Ablage einer Datei in einer Datenbank als BLOB Datenbankprogrammierung 6
O Oracle Blob in MySQL Blob umwandeln Datenbankprogrammierung 2
M byte-Array in Datenbank speichern Datenbankprogrammierung 2
Helgon H2 byte[] in BINARY einfügen Datenbankprogrammierung 4
T Derby/JavaDB byte[] in Datenbank speichern [JPA] Datenbankprogrammierung 10
thE_29 Byte auslesen mit MS SQL Server Datenbankprogrammierung 4

Ähnliche Java Themen


Oben