2011-07-21 37 views
10

Al utilizar método setObjectPreparedStatement 's para una columna de tipo de texto (en un MySQL DB), lo que debería ser el último parámetro?¿Cuál es el equivalente de java.sql.Types para MySQL TEXT?

Por ejemplo, sé que esto está bien para una columna VARCHAR:

stmt.setObject(i, "bla", Types.VARCHAR);

donde stmt es una PreparedStatement y Types es java.sql.Types.

Pero si el tipo de la columna de la base de datos es texto, debería seguir utilizando VARCHAR? o tal vez BLOB o CLOB?

+1

FYI: Puede adquirir esta información utilizando ['DatabaseMetaData.getColumns'] (http://download.oracle.com/javase/6/docs/api/java/sql/DatabaseMetaData.html#getColumns%28java. lang.String,% 20java.lang.String,% 20java.lang.String,% 20java.lang.String% 29) método. Puede adquirir un objeto 'DatabaseMetaData' llamando a' connection.getMetaData() '. El 'ResultSet' devuelto por' getColumns' tiene una columna 'int' llamada' DATA_TYPE' que es lo que está buscando. –

Respuesta

7

La respuesta (SÍ, que están destinados a utilizar VARCHAR) se puede encontrar aquí:

http://dev.mysql.com/doc/connector-j/en/connector-j-reference-type-conversions.html (enlace roto obsoleta actualizada)

y he aquí algo de información sobre el tipo de MYSQL TEXT

http://dev.mysql.com/doc/refman/5.0/en/blob.html

+0

Gracias. He estado en esas páginas, y no estaba seguro de que el valor de retorno 'GetColumnClassName' era el que necesitaba, así que gracias por aclarar eso :) –

+3

La información relevante debe publicarse en la pregunta en lugar de solo vincularse también ... –

0

no hay ningún campo texto aquí Oracle Doc for sql Types, pero pueden aparecer en el futuro (ahora se puede utilizar la información que el tamaño es 21845 como un truco codificado aplicación - si usted necesita saber más tarde que este es el campo TEXTO - el tamaño del campo real es algo que eliges y el resto del texto es memorizado en otra parte por MySql)

Así que la primera respuesta con "usar VARCHAR como tipo" está funcionando (probablemente la biblioteca haga llamada setString)

La respuesta "setString" también está funcionando (precedida por un interruptor (tipo_campo) si desea tomar las decisiones usted mismo - I us e esta opción con el fin de depurar el código sea más fácil - la velocidad es la misma que el costo = Interruptor + setString en ambos casos)

Gracias a todos por los enlaces y confirmaciones!

Cuestiones relacionadas