示例#1
0
        private SchemaTable getSchemaTable(DbDataReader reader)
        {
            SchemaTable schemaTable = new SchemaTable();

            DataTable resultSchema = reader.GetSchemaTable();

            foreach (DataRow row in resultSchema.Rows)
            {
                SchemaColumn schemaColumn = new SchemaColumn();
                schemaTable.Add(schemaColumn);

                schemaColumn.ColumnName       = getDataRowColumn(row, "ColumnName") as string;
                schemaColumn.ColumnOrdinal    = Convert.ToInt32(getDataRowColumn(row, "ColumnOrdinal"));
                schemaColumn.ColumnSize       = Convert.ToInt32(getDataRowColumn(row, "ColumnSize"));
                schemaColumn.NumericPrecision = Convert.ToInt32(getDataRowColumn(row, "NumericPrecision"));
                schemaColumn.NumericScale     = Convert.ToInt32(getDataRowColumn(row, "NumericScale"));
                schemaColumn.ProviderType     = Convert.ToInt32(getDataRowColumn(row, "ProviderType"));
                schemaColumn.IsLong           = (getDataRowColumn(row, "IsLong") as bool?).GetValueOrDefault();
                schemaColumn.AllowDBNull      = (getDataRowColumn(row, "AllowDBNull") as bool?).GetValueOrDefault();
                schemaColumn.IsReadOnly       = (getDataRowColumn(row, "IsReadOnly") as bool?).GetValueOrDefault();
                schemaColumn.IsRowVersion     = (getDataRowColumn(row, "IsRowVersion") as bool?).GetValueOrDefault();
                schemaColumn.IsUnique         = (getDataRowColumn(row, "IsUnique") as bool?).GetValueOrDefault();
                schemaColumn.IsKey            = (getDataRowColumn(row, "IsKey") as bool?).GetValueOrDefault();
                schemaColumn.IsAutoIncrement  = (getDataRowColumn(row, "IsAutoIncrement") as bool?).GetValueOrDefault();
                schemaColumn.BaseTableName    = getDataRowColumn(row, "BaseTableName") as string;
                schemaColumn.BaseColumnName   = getDataRowColumn(row, "BaseColumnName") as string;

                ///////////////////////////
                object         obj        = getDataRowColumn(row, "DataType");
                Type           t          = Type.GetType(obj.ToString());
                XmlTypeMapping xmlMapping = getQualifiedNameForSystemType(t);
                schemaColumn.DataType = xmlMapping.XsdTypeName;

                /*
                 * Console.WriteLine("-------------------");
                 * Console.WriteLine(xmlMapping.ElementName);
                 * Console.WriteLine(xmlMapping.Namespace);
                 * Console.WriteLine(xmlMapping.TypeFullName);
                 * Console.WriteLine(xmlMapping.TypeName);
                 * Console.WriteLine(xmlMapping.XsdElementName);
                 * Console.WriteLine(xmlMapping.XsdTypeName);
                 * Console.WriteLine(xmlMapping.XsdTypeNamespace);
                 */

                /*
                 * XmlSerializer xs = new XmlSerializer(t);
                 * var sb = new StringBuilder();
                 * using (var writer = new StringWriter(sb))
                 * {
                 *  xs.Serialize(writer, obj);
                 *  writer.Close();
                 * }
                 *
                 * //Xmltype
                 * Console.WriteLine(sb.ToString());
                 */
            }

            return(schemaTable);
        }