check for SQLServer uniquesidentifier type for VARCHAR
authorKonstantin Triger <kostat@mono-cvs.ximian.com>
Sun, 26 Mar 2006 17:03:20 +0000 (17:03 -0000)
committerKonstantin Triger <kostat@mono-cvs.ximian.com>
Sun, 26 Mar 2006 17:03:20 +0000 (17:03 -0000)
svn path=/trunk/mcs/; revision=58549

mcs/class/System.Data/System.Data.ProviderBase.jvm/AbstractDataReader.cs
mcs/class/System.Data/System.Data.ProviderBase.jvm/ChangeLog

index e3f709f5b53f8874fc4173d8dc80918f4c72f9ee..ac4f8b8b4a1854058925fbf08847a8f882ae4216 100644 (file)
@@ -757,6 +757,7 @@ namespace System.Data.ProviderBase
                                        return new BooleanReaderCacheContainer();\r
                                case DbConvert.JavaSqlTypes.BLOB :\r
                                        return new BlobReaderCacheContainer();\r
+                               case DbConvert.JavaSqlTypes.VARCHAR:\r
                                case DbConvert.JavaSqlTypes.CHAR :                                              \r
                                        if (String.CompareOrdinal("uniqueidentifier", ResultsMetaData.getColumnTypeName(columnIndex)) == 0) {\r
                                                return new GuidReaderCacheContainer();\r
@@ -798,7 +799,6 @@ namespace System.Data.ProviderBase
                                case DbConvert.JavaSqlTypes.INTEGER :\r
                                        return new Int32ReaderCacheContainer();\r
                                case DbConvert.JavaSqlTypes.LONGVARCHAR :\r
-                               case DbConvert.JavaSqlTypes.VARCHAR :\r
                                        return new StringReaderCacheContainer();\r
                                case DbConvert.JavaSqlTypes.NULL :\r
                                        return new NullReaderCacheContainer();\r
@@ -894,13 +894,20 @@ namespace System.Data.ProviderBase
                                        schemaRow [(int)SCHEMA_TABLE.IsLong] = true;\r
                                        break;\r
                                }\r
+                               case DbConvert.JavaSqlTypes.VARCHAR:\r
                                case DbConvert.JavaSqlTypes.CHAR: {\r
                                        // FIXME : specific for Microsoft SQl Server driver\r
-                                       if (metaData.getColumnTypeName(columnIndex).Equals("uniqueidentifier")) {\r
+                                       if (String.CompareOrdinal(metaData.getColumnTypeName(columnIndex), "uniqueidentifier") == 0) {\r
                                                schemaRow [(int)SCHEMA_TABLE.ProviderType] = DbType.Guid;\r
                                                schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfGuid;\r
                                                schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
                                        }\r
+                                       else\r
+                                       if (String.CompareOrdinal(metaData.getColumnTypeName(columnIndex), "sql_variant") == 0) {\r
+                                               schemaRow [(int)SCHEMA_TABLE.ProviderType] = DbType.Object;\r
+                                               schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfObject;\r
+                                               schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+                                       }\r
                                        else {\r
                                                schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
                                                schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfString;\r
@@ -1025,26 +1032,6 @@ namespace System.Data.ProviderBase
                                        schemaRow [(int)SCHEMA_TABLE.IsLong] = true;\r
                                        break;\r
                                }\r
-                               case DbConvert.JavaSqlTypes.VARCHAR: {\r
-                                       // FIXME : specific for Microsoft SQl Server driver\r
-                                       if (metaData.getColumnTypeName(columnIndex).Equals("sql_variant")) {\r
-                                               schemaRow [(int)SCHEMA_TABLE.ProviderType] = DbType.Object;\r
-                                               schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfObject;\r
-                                               schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
-                                       }\r
-                                       else {\r
-                                               schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
-                                               schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfString;// (char[]);\r
-                                               schemaRow [(int)SCHEMA_TABLE.IsLong] = false;//true;\r
-                                       }\r
-                                       break;\r
-                               }\r
-                                       //                      else if(columnType == -8 && metaData.getColumnTypeName(columnIndex).Equals("ROWID")) {\r
-                                       //                              // FIXME : specific for Oracle JDBC driver : OracleTypes.ROWID\r
-                                       //                              schemaRow [(int)SCHEMA_TABLE.ProviderType] = DbType.String;\r
-                                       //                              schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfString;\r
-                                       //                              schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
-                                       //                      }\r
                                default: {\r
                                        schemaRow [(int)SCHEMA_TABLE.ProviderType] = DbType.Object;\r
                                        schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfObject;\r
index 14ee0809cfabd6f97c8897f9a733ee62319a6778..3826cf94bb6d5b229739aad1ff2c35c407779fc8 100644 (file)
@@ -1,3 +1,7 @@
+2006-03-26  Konstantin Triger <kostat@mainsoft.com>
+
+       * AbstractDataReader.cs: check for SQLServer uniqueidentifier type for VARCHAR.
+
 2006-03-21     Boris Kirzner <borisk@mainsoft.com>
        * AbstractDBConnection.cs: resolve abguity.