X-Git-Url: http://secure.phpeclipse.com

diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/sql/SQLStandardResultSetResults.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/sql/SQLStandardResultSetResults.java
index 7358b26..6d0976d 100644
--- a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/sql/SQLStandardResultSetResults.java
+++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/sql/SQLStandardResultSetResults.java
@@ -3,6 +3,7 @@ package com.quantum.sql;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.UnsupportedEncodingException;
 import java.sql.Connection;
@@ -91,24 +92,26 @@ public class SQLStandardResultSetResults extends SQLResultSetResults implements
 				List row = new ArrayList();
 				for (int i = 1, length = columns.size(); i <= length; i++) {
 					String value = null;
-					if (getColumn(i).getSize() < MAX_COLUMN_WIDTH) {
-						value = getEncodedString(set, getEncoding(), i);
-					} else {
-						try {
+					try {
+						if (set.getMetaData().getColumnType(i) == java.sql.Types.LONGVARBINARY) {
+							value = getEncodedStringFromBinaryStream(set, getEncoding(), i);
+						} else	if (getColumn(i).getSize() < MAX_COLUMN_WIDTH) {
+							value = getEncodedString(set, getEncoding(), i);
+						} else {		
 							if ("".equals(getEncoding())) { //$NON-NLS-1$
 								value = getStringFromCharacterSteam(set, i);
 							} else {
 								value = getEncodedStringFromBinaryStream(set, getEncoding(), i);
 							}
-						} catch (IOException e) {
-							value = set.getString(i);
-						} catch (RuntimeException e) {
-							// hack for mysql which doesn't implement
-							// character streams
-							value = set.getString(i);
 						}
+					} catch (IOException e) {
+						value = set.getString(i);
+					} catch (RuntimeException e) {
+						// hack for mysql which doesn't implement
+						// character streams
+						value = set.getString(i);
 					}
-					if (value == null) {
+					if (value == null && !set.wasNull()) {
 						value = set.getString(i);
 					}
 					row.add(value == null || set.wasNull() ? "<NULL>" : value); //$NON-NLS-1$
@@ -153,7 +156,10 @@ public class SQLStandardResultSetResults extends SQLResultSetResults implements
 			} finally {
 				binaryStream.close();
 			}
-			return new String(baos.toByteArray(), encoding);
+			if ("".equals(encoding))
+				return new String(baos.toByteArray());
+			else
+				return new String(baos.toByteArray(), encoding);
 		} else {
 			return null;
 		}
@@ -189,7 +195,6 @@ public class SQLStandardResultSetResults extends SQLResultSetResults implements
 		}
 	}
 
-
 	/**
 	 * @param set
 	 * @param encoding
@@ -200,9 +205,12 @@ public class SQLStandardResultSetResults extends SQLResultSetResults implements
 	private String getEncodedString(ResultSet set, String encoding, int index) 
 			throws SQLException {
 		try {
-			return encoding == null || encoding.trim().length() == 0 
-				? set.getString(index) 
-				: new String(set.getBytes(index), encoding);
+			if (encoding == null || encoding.trim().length() == 0) {
+				return set.getString(index); 
+			}
+			byte[] colBytes = set.getBytes(index);
+			if (colBytes == null) return null;
+			else return new String(colBytes, encoding);
 		} catch (UnsupportedEncodingException e) {
 			return set.getString(index);
 		}