Anzeige:
Ergebnis 1 bis 7 von 7

Thema: MySQL-Server Einstellung falsch???

  1. #1
    Registrierter Benutzer
    Registriert seit
    25.10.2005
    Ort
    Hamminkeln
    Beiträge
    302

    MySQL-Server Einstellung falsch???

    Hallo zusammen,

    ich habe folgendes Problem:
    Auf meinem LAMP-System habe ich nach einiger Konfiguration hinbekommen,
    das Umlaute und Sonderzeichen bei der Eingabe per PHP-Script auch in der Spalte einer Tabelle auf dem MySQl-Server richtig angezeigt und per Abfrage mittels PHP-Script auch korrekt angezeigt wird (aller dings hier jetzt in Hochkomma). Jetzt habe ich eine Eingabemaske mittels Java umgesetzt, Die Daten landen schön im Server, aber werden nicht korrekt angezeigt, weil kein Umlaute und Sonderzeichen bzw kryptische Zeichen.
    Wenn ich eine Abfrage der Datensätz mittels PHP über Web bzw mit meiner Java-Anwendung mache, werden die Daten korrekt geholt und angezeigt.

    Was kann ich ändern, damit die Daten auch in der DB richtig angezeigt werden, aber auch mit den Clients unter Java und PHP???

    Ich danke euch schonmal für eure Hilfe und Antworten!
    Geändert von Jor (16-02-2006 um 11:39 Uhr)
    Vereinfacht die Dinge, und ihr erleichtert euch das Leben. (Henry David Thoreau)

  2. #2
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Vermutlich liegt ein Problem mit der Zeichenkodierung vor. Mein Vorschlag dazu: lege dich auf unicode fest. Das läuft mit Java problemlos, bei der Datenbank wirst du es einstellen müssen, PHP wird wohl kein Problem haben, denke ich.
    Legst du alles auf unicode fest, sparst du dir die Konvertierungen.
    Kleiner Tipp zu Java und Datenbank übrigens: Nimm ein PreparedStatement zum Einfügen und gewöhne dir an, Variablen, die du in die Datenbank schaufeln willst, als Objektvariablen anzulegen. Also nicht int sondern Integer und so weiter. Die kannst du nämlich auf null setzen. Sonst kriegst du immer nur 0, wenn sie nicht angelegt sind.
    Geändert von mwanaheri (16-02-2006 um 13:55 Uhr)
    Das Ziel ist das Ziel.

  3. #3
    Registrierter Benutzer
    Registriert seit
    25.10.2005
    Ort
    Hamminkeln
    Beiträge
    302
    @mwanaheri,

    jep, sowas habe ich mir schon gedacht, die Kodierung. Da wird mir wohl nichts anderes übrig bleiben und wieder den Einstellmeister zu machen.
    Das mit den Objectvariablen war ein toller Tipp, aber zu dem Statement, kannst du mir da ein Beispiel nennen? Ich habe mir die Dinger immer selbst zusammen gestellt, weiss nun nicht genau was du mit PreparedStatement meinst.
    Vereinfacht die Dinge, und ihr erleichtert euch das Leben. (Henry David Thoreau)

  4. #4
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Na, du bereitest ein Statement vor:
    String frage = "select * from artikel where Kategorie = ? and id = ?;";
    PreparedStatement stat = con.prepareStatement(frage)
    stat.setString(1,"Bier");
    stat.setInt(2,4);
    ResultSet res = stat.executeQuery();

    Wenn du hier Variablen übergibst, kannst du sie auf null testen:

    Nehmen wir eine Integer-Variable x:
    if (x!= null)
    stat.setInt(2,x);
    else
    stat.setNull(2,Types.Integer);

    In dieser Hinsicht ist ein PreparedStatement schon mal flexibler und einfacher als ein selbst zusammenbauen. Eine besondere Stärke hat es noch in Loops.
    Statt es jedes mal neu zu bauen, füllt man es nur neu. Das ist wesentlich schneller.
    Das Ziel ist das Ziel.

  5. #5
    Registrierter Benutzer
    Registriert seit
    25.10.2005
    Ort
    Hamminkeln
    Beiträge
    302
    Danke für die Erklärung!
    Ich denke es ist mir klar geworden was du meinst und wo der Vorteil liegt. Werde es in meine Anwendung aufnehmen.
    Vereinfacht die Dinge, und ihr erleichtert euch das Leben. (Henry David Thoreau)

  6. #6
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182

    PreparedStatements

    Also was PreparedStatements angeht stellt sich immer die Frage inwieweit sich das wann und wo auszahlt

    Es ist generell langsamer wenn nur eine Abfrage damit geschickt wird, da 2 roundtrips notwendig sind und bei vielen Datenbanken ist PreparedStatement erst nach 50x maligem ausfürhren schneller als eine text-query.
    Geändert von Lin728 (21-08-2017 um 14:51 Uhr)

  7. #7
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Das wäre mir neu, dass ein prepared statement datenbankseitig anders gehandhabt würde als ein händisch zusammengesetztes, aber ich lasse mich da gern belehren.
    Spätestens, wenn man den Abfragestring per "bla" + blub.value() + "blabla" ...
    zusammensetzt, braucht man ja auch einiges an Speicher dafür. Kommen dann noch Fälle hinzu, wo nullwerte vorliegen können, sind immer noch reichlich Verzweigungen nötig. Dann wird der Code vielleicht optisch etwas kürzer, aber auch komplizierter und unübersichtlicher.
    Geändert von mwanaheri (22-02-2006 um 10:41 Uhr)
    Das Ziel ist das Ziel.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •