He estado usando ORACLE9i y Oracle8 durante mucho tiempo. He anotado aquí los problemas que necesitan atención al usar JSP solo para su referencia.
1. Cómo manejar tipos grandes de Clob y BLOB.
CLOB se puede utilizar para almacenar datos de texto grandes y puede almacenar hasta 4 GB de datos. Es relativamente común en el desarrollo de aplicaciones. Proporciona dos métodos para leer Obtener los datos de Clob:
El método getCharacterStream() devuelve el flujo de entrada codificado en Unicode (objeto java.io.Reader).
El método getAsciiStream() devuelve el flujo de entrada codificado en ASCII (java. io.InputStream).
Entonces, si puede almacenar caracteres chinos, debe usar el método anterior.
Ahora
dé un ejemplo práctico y déjeme aprender cómo usar CLOB paso a paso.
crear prueba de tabla (id INTEGER, contenido clob);
a continuación, insertamos un registro en esta tabla a través de JSP y luego lo obtenemos y lo mostramos:
los
siguientes puntos a tener en cuenta son:
1) Los datos de tipo Clob no se pueden insertar directamente. y debe darse primero a través del método vacío_clob(). Asigna un localizador (de la misma manera, use la función vacía_blob() para asignar un localizador para blobs. Luego selecciónelo (por supuesto, no tiene datos en este momento). pero el conjunto de resultados no está vacío), obtenga un objeto Clob y modifique el contenido del objeto para que satisfaga nuestras necesidades, y luego el registro de fila se actualiza mediante el método de actualización
2) Al modificar un registro que contiene el tipo lob mediante selección, la fila debe estar bloqueada (implementada mediante la palabra clave for update); de lo contrario, Oracle informará un error.
3) Solo si el registro insertado se selecciona para actualizar, se producirá un error de "violación del orden de lectura". función de envío a falso, es decir, el envío automático no está permitido, luego confírmelo y luego selecciónelo. Esta es la función de las líneas //* anteriores en este código.
A continuación, leeremos el registro recién insertado del. base de datos y muéstrela:
2. Problema de codificación
Debido a que los desarrolladores de JAVA son extranjeros, su soporte para el chino no es muy bueno. Bueno, esto nos ha causado muchos dolores de cabeza a muchos de nosotros, que es de lo que estamos hablando del carácter chino. codificación. No entraré en detalles sobre algunas especificaciones de codificación de caracteres chinos. Hablaré principalmente sobre cómo conectarse a una base de datos Oracle.
1. La pregunta china insertada en la base de datos debe convertirse a codificación.
2. La lectura china de la base de datos debe convertirse a codificación.
Veamos un código JAVA codificado:
//ECov.java importar java.io.UnsupportedEncodingException; clase pública ECov { Cadena estática pública asc2gb (Cadena asc) { Retiro de cuerdas; si(asc==nulo)devuelve asc; intentar{ ret=nueva cadena(asc.getBytes("ISO8859_1"),"GB2312"); } captura(UnsupportedEncodingException e){ ret=asc; } volver atrás; } Cadena estática pública gb2asc (Cadena gb) { Retiro de cuerdas; si (gb == nulo) devuelve gb; intentar{ ret=new String(gb.getBytes("GB2312"),"ISO8859_1"); } captura(UnsupportedEncodingException e){ ret=gb; } volver atrás; } público estático int byte2int (byte b) { devolver ((-1) >>>>24)&b; } } |
De hecho, el significado de este código es combinar los dos métodos en uno.
Se debe utilizar ECov.gb2asc(arg) al insertar en la base de datos y ECov.asc2gb(arg) al leer. El punto más crítico es que Oracle parece reconocer solo la codificación del formato ISO8859_1 (solo mi idea).
3. Algunos pequeños detalles
1. Es setAutoCommit (verdadero o falso), que es la función commit() comúnmente utilizada en sqlPlus. Si usa true, no use commit(); de lo contrario, seguirá usando el método commit(). .
2. El procesamiento de tipos de fechas en realidad no es tan simple como setDate () y getDate () como se imagina. Hay grandes lagunas en el medio. Le resultará muy divertido si lo depura usted mismo.
3. Es mejor utilizar la tecnología de grupo de conexiones en la base de datos. Es un buen método utilizar un entorno J2EE estándar y tecnología JNDI simple.