From 55b485d8f2dcd1511090b81f7235a1ed0e2c81ba Mon Sep 17 00:00:00 2001 From: wenshao Date: Thu, 14 Jul 2011 05:29:33 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3encodingFilter=EF=BC=8C?= =?UTF-8?q?=E5=85=BC=E5=AE=B9SimpleDriver?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/druid/trunk@427 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../encoding/EncodingConvertFilter.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/alibaba/druid/filter/encoding/EncodingConvertFilter.java b/src/main/java/com/alibaba/druid/filter/encoding/EncodingConvertFilter.java index e5bb7321f9..d783e52653 100644 --- a/src/main/java/com/alibaba/druid/filter/encoding/EncodingConvertFilter.java +++ b/src/main/java/com/alibaba/druid/filter/encoding/EncodingConvertFilter.java @@ -18,7 +18,10 @@ package com.alibaba.druid.filter.encoding; import java.io.Reader; import java.io.StringReader; import java.io.UnsupportedEncodingException; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; import java.sql.SQLException; +import java.sql.Types; import java.util.Properties; import com.alibaba.druid.filter.FilterAdapter; @@ -86,7 +89,28 @@ public class EncodingConvertFilter extends FilterAdapter { @Override public Object resultSet_getObject(FilterChain chain, ResultSetProxy result, int columnIndex) throws SQLException { - Object value = super.resultSet_getObject(chain, result, columnIndex); + ResultSet rawResultSet = result.getResultSetRaw(); + ResultSetMetaData metadata = rawResultSet.getMetaData(); + int columnType = metadata.getColumnType(columnIndex); + + Object value = null; + switch (columnType) { + case Types.CHAR: + value = super.resultSet_getString(chain, result, columnIndex); + break; + case Types.CLOB: + value = super.resultSet_getString(chain, result, columnIndex); + break; + case Types.LONGVARCHAR: + value = super.resultSet_getString(chain, result, columnIndex); + break; + case Types.VARCHAR: + value = super.resultSet_getString(chain, result, columnIndex); + break; + default: + value = super.resultSet_getObject(chain, result, columnIndex); + } + return decodeObject(result.getStatementProxy().getConnectionProxy(), value); }