Ich verwende ORACLE9i und Oracle8 schon seit langer Zeit. Die Probleme, die bei der Verwendung von JSP beachtet werden müssen, habe ich hier nur als Referenz aufgeführt.
1. Umgang mit großen Typen von Clob und BLOB,
die zum Speichern großer Textdaten verwendet werden können. Die von Java bereitgestellte Klasse sql.Clob ist relativ häufig Es bietet zwei Methoden zum Lesen der Daten von Clob:
Die Methode getCharacterStream() gibt den Unicode-codierten Eingabestream zurück (java.io.Reader-Objekt).
Die Methode getAsciiStream() gibt den ASCII-codierten Eingabestream zurück (java.io.reader).
Wenn Sie also chinesische Zeichen speichern möchten,
müssen Sie jetzt ein praktisches Beispiel geben und lernen, wie man CLOB verwendet.
Erstellen
Sie zunächst eine Tabelle mit CLOB-Feldern.
Tabellentest erstellen (ID INTEGER, Inhalt Clob);
Als nächstes fügen wir einen Datensatz über JSP in diese Tabelle ein und rufen ihn dann ab und zeigen ihn an:
Die
folgenden Punkte sind zu beachten:
1) Daten vom Typ Clob können nicht direkt eingefügt werden. und muss zuerst über die Methode empty_clob() angegeben werden. Sie weist einen Locator zu (verwenden Sie auf die gleiche Weise die Funktion empty_blob(), um einen Locator für Blobs zuzuweisen) und wählen Sie ihn dann aus (zu diesem Zeitpunkt sind natürlich keine Daten vorhanden). (aber die Ergebnismenge ist nicht leer), rufen Sie ein Clob-Objekt ab und ändern Sie den Inhalt des Objekts, damit es unseren Anforderungen entspricht. Anschließend wird der Zeilendatensatz über die Aktualisierungsmethode aktualisiert.
2) Wenn Sie einen Datensatz mit Lob-Typ ändern, verwenden Sie select. Die Zeile muss gesperrt sein (durch das Schlüsselwort for update implementiert), andernfalls meldet Oracle einen Fehler.
3) Nur wenn der eingefügte Datensatz zur Aktualisierung ausgewählt wird, tritt ein Fehler „Lesereihenfolgeverletzung“ auf. Die Lösung besteht darin, die automatische Einstellung vorzunehmen Übermittlungsfunktion auf false, das heißt, automatische Übermittlung ist nicht zulässig, dann festschreiben und dann auswählen. Dies ist die Funktion der //*-Zeilen in diesem Code.
Als nächstes lesen wir den neu eingefügten Datensatz Datenbank und zeigen Sie sie an:
2. Codierungsproblem
Da die Entwickler von JAVA Ausländer sind, ist ihre Unterstützung für Chinesisch nicht sehr gut. Okay, das hat vielen von uns große Kopfschmerzen bereitet, worüber wir über chinesische Schriftzeichen sprechen Kodierung Ich werde nicht näher auf einige Spezifikationen für die Kodierung chinesischer Zeichen eingehen, sondern hauptsächlich auf die Herstellung einer Verbindung zu einer Oracle-Datenbank, aber diese kleinen Probleme sind sehr problematisch.
1. Die in die Datenbank eingefügte chinesische Frage muss in eine Kodierung umgewandelt werden.
2. Die aus der Datenbank gelesenen chinesischen Fragen müssen in eine Kodierung umgewandelt werden.
Schauen wir uns einen kodierten JAVA-Code an:
//ECov.java import java.io.UnsupportedEncodingException; öffentliche Klasse ECov { öffentlicher statischer String asc2gb(String asc){ String ret; if(asc==null)return asc; versuchen{ ret=new String(asc.getBytes("ISO8859_1"),"GB2312"); } Catch(UnsupportedEncodingException e){ ret=asc; } return ret; } öffentlicher statischer String gb2asc(String gb){ String ret; if(gb==null)return gb; versuchen{ ret=new String(gb.getBytes("GB2312"),"ISO8859_1"); } Catch(UnsupportedEncodingException e){ ret=gb; } return ret; } öffentliches statisches int byte2int(byte b){ return ((-1)>>>>24)&b; } } |
Tatsächlich besteht die Bedeutung dieses Codes darin, die beiden Methoden zu einer zu kombinieren.
Beim Einfügen in die Datenbank sollte ECov.gb2asc(arg) und beim Lesen ECov.asc2gb(arg) verwendet werden. Der kritischste Punkt ist, dass Oracle anscheinend nur die Kodierung des ISO8859_1-Formats erkennt (nur meine Idee).
3. Einige kleine Details
1. Es ist setAutoCommit (true oder false), die häufig verwendete commit()-Funktion in sqlPlus. Wenn Sie true verwenden, verwenden Sie nicht commit(), andernfalls verwenden Sie weiterhin die commit()-Methode .
2. Die Verarbeitung von Datumstypen ist tatsächlich nicht so einfach wie setDate() und getDate(), wie man es sich vorgestellt hat. Es gibt große Lücken in der Mitte. Es wird Ihnen viel Spaß machen, wenn Sie es selbst debuggen.
3. Es ist am besten, die Verbindungspooltechnologie in der Datenbank zu verwenden. Es ist eine gute Methode, eine Standard-J2EE-Umgebung und einfache JNDI-Technologie zu verwenden.