| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395 |
- //------------------------------------------------------------------------------
- // <copyright file="DBSchemaRow.cs" company="Microsoft">
- // Copyright (c) Microsoft Corporation. All rights reserved.
- // </copyright>
- // <owner current="true" primary="true">Microsoft</owner>
- // <owner current="true" primary="false">Microsoft</owner>
- //------------------------------------------------------------------------------
- namespace System.Data.Common {
- using System;
- using System.ComponentModel;
- using System.Data;
- using System.Diagnostics;
- using System.Globalization;
- sealed internal class DbSchemaRow {
- internal const string SchemaMappingUnsortedIndex = "SchemaMapping Unsorted Index";
- DbSchemaTable schemaTable;
- DataRow dataRow;
- static internal DbSchemaRow[] GetSortedSchemaRows(DataTable dataTable, bool returnProviderSpecificTypes) { // MDAC 60609
- DataColumn sortindex= dataTable.Columns[SchemaMappingUnsortedIndex];
- if (null == sortindex) { // WebData 100390
- sortindex = new DataColumn(SchemaMappingUnsortedIndex, typeof(Int32)); // MDAC 67050
- dataTable.Columns.Add(sortindex);
- }
- int count = dataTable.Rows.Count;
- for (int i = 0; i < count; ++i) {
- dataTable.Rows[i][sortindex] = i;
- };
- DbSchemaTable schemaTable = new DbSchemaTable(dataTable, returnProviderSpecificTypes);
- const DataViewRowState rowStates = DataViewRowState.Unchanged | DataViewRowState.Added | DataViewRowState.ModifiedCurrent;
- DataRow[] dataRows = dataTable.Select(null, "ColumnOrdinal ASC", rowStates);
- Debug.Assert(null != dataRows, "GetSchemaRows: unexpected null dataRows");
- DbSchemaRow[] schemaRows = new DbSchemaRow[dataRows.Length];
- for (int i = 0; i < dataRows.Length; ++i) {
- schemaRows[i] = new DbSchemaRow(schemaTable, dataRows[i]);
- }
- return schemaRows;
- }
- internal DbSchemaRow(DbSchemaTable schemaTable, DataRow dataRow) {
- this.schemaTable = schemaTable;
- this.dataRow = dataRow;
- }
- internal DataRow DataRow {
- get {
- return dataRow;
- }
- }
- internal string ColumnName {
- get {
- Debug.Assert(null != schemaTable.ColumnName, "no column ColumnName");
- object value = dataRow[schemaTable.ColumnName, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToString(value, CultureInfo.InvariantCulture);
- }
- return "";
- }
- /*set {
- Debug.Assert(null != schemaTable.ColumnName, "missing column ColumnName");
- dataRow[schemaTable.ColumnName] = value;
- }*/
- }
- //internal Int32 Ordinal {
- /*get {
- Debug.Assert(null != schemaTable.Ordinal, "no column Ordinal");
- return Convert.ToInt32(dataRow[schemaTable.Ordinal, DataRowVersion.Default], CultureInfo.InvariantCulture);
- }*/
- /*set {
- Debug.Assert(null != schemaTable.Ordinal, "missing column Ordinal");
- dataRow[schemaTable.Ordinal] = value;
- }*/
- //}
- internal Int32 Size {
- get {
- Debug.Assert(null != schemaTable.Size, "no column Size");
- object value = dataRow[schemaTable.Size, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToInt32(value, CultureInfo.InvariantCulture);
- }
- return 0;
- }
- /*set {
- Debug.Assert(null != schemaTable.Size, "missing column Size");
- dataRow[schemaTable.Size] = value;
- }*/
- }
- internal string BaseColumnName {
- get {
- if (null != schemaTable.BaseColumnName) {
- object value = dataRow[schemaTable.BaseColumnName, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToString(value, CultureInfo.InvariantCulture);
- }
- }
- return "";
- }
- /*set {
- Debug.Assert(null != schemaTable.BaseColumnName, "missing column BaseColumnName");
- dataRow[schemaTable.BaseColumnName] = value;
- }*/
- }
- internal string BaseServerName {
- get {
- if (null != schemaTable.BaseServerName) {
- object value = dataRow[schemaTable.BaseServerName, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToString(value, CultureInfo.InvariantCulture);
- }
- }
- return "";
- }
- /*set {
- Debug.Assert(null != schemaTable.BaseServerName, "missing column BaseServerName");
- dataRow[schemaTable.BaseServerName] = value;
- }*/
- }
- internal string BaseCatalogName {
- get {
- if (null != schemaTable.BaseCatalogName) {
- object value = dataRow[schemaTable.BaseCatalogName, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToString(value, CultureInfo.InvariantCulture);
- }
- }
- return "";
- }
- /*set {
- Debug.Assert(null != schemaTable.BaseCatalogName, "missing column BaseCatalogName");
- dataRow[schemaTable.BaseCatalogName] = value;
- }*/
- }
- internal string BaseSchemaName {
- get {
- if (null != schemaTable.BaseSchemaName) {
- object value = dataRow[schemaTable.BaseSchemaName, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToString(value, CultureInfo.InvariantCulture);
- }
- }
- return "";
- }
- /*set {
- Debug.Assert(null != schemaTable.BaseSchemaName, "missing column BaseSchemaName");
- dataRow[schemaTable.BaseSchemaName] = value;
- }*/
- }
- internal string BaseTableName {
- get {
- if (null != schemaTable.BaseTableName) {
- object value = dataRow[schemaTable.BaseTableName, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToString(value, CultureInfo.InvariantCulture);
- }
- }
- return "";
- }
- /*set {
- Debug.Assert(null != schemaTable.BaseTableName, "missing column BaseTableName");
- dataRow[schemaTable.BaseTableName] = value;
- }*/
- }
- internal bool IsAutoIncrement {
- get {
- if (null != schemaTable.IsAutoIncrement) {
- object value = dataRow[schemaTable.IsAutoIncrement, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToBoolean(value, CultureInfo.InvariantCulture);
- }
- }
- return false;
- }
- /*set {
- Debug.Assert(null != schemaTable.IsAutoIncrement, "missing column IsAutoIncrement");
- dataRow[schemaTable.IsAutoIncrement] = (bool)value;
- }*/
- }
- internal bool IsUnique {
- get {
- if (null != schemaTable.IsUnique) {
- object value = dataRow[schemaTable.IsUnique, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToBoolean(value, CultureInfo.InvariantCulture);
- }
- }
- return false;
- }
- /*set {
- Debug.Assert(null != schemaTable.IsUnique, "missing column IsUnique");
- dataRow[schemaTable.IsUnique] = (bool)value;
- }*/
- }
- internal bool IsRowVersion {
- get {
- if (null != schemaTable.IsRowVersion) {
- object value = dataRow[schemaTable.IsRowVersion, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToBoolean(value, CultureInfo.InvariantCulture);
- }
- }
- return false;
- }
- /*set {
- Debug.Assert(null != schemaTable.IsRowVersion, "missing column IsRowVersion");
- dataRow[schemaTable.IsRowVersion] = value;
- }*/
- }
- internal bool IsKey {
- get {
- if (null != schemaTable.IsKey) {
- object value = dataRow[schemaTable.IsKey, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToBoolean(value, CultureInfo.InvariantCulture);
- }
- }
- return false;
- }
- /*set {
- Debug.Assert(null != schemaTable.IsKey, "missing column IsKey");
- dataRow[schemaTable.IsKey] = value;
- }*/
- }
- // consider: just do comparison directly -> (object)(baseColumnName) == (object)(columnName)
- //internal bool IsAliased {
- /*get {
- if (null != schemaTable.IsAliased) { // MDAC 62336
- object value = dataRow[schemaTable.IsAliased, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToBoolean(value, CultureInfo.InvariantCulture);
- }
- }
- return false;
- }*/
- /*set {
- Debug.Assert(null != schemaTable.IsAliased, "missing column IsAliased");
- dataRow[schemaTable.IsAliased] = value;
- }*/
- //}
- internal bool IsExpression {
- get {
- if (null != schemaTable.IsExpression) { // MDAC 62336
- object value = dataRow[schemaTable.IsExpression, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToBoolean(value, CultureInfo.InvariantCulture);
- }
- }
- return false;
- }
- /*set {
- Debug.Assert(null != schemaTable.IsExpression, "missing column IsExpression");
- dataRow[schemaTable.IsExpression] = value;
- }*/
- }
- //internal bool IsIdentity {
- /*get {
- if (null != schemaTable.IsIdentity) { // MDAC 62336
- object value = dataRow[schemaTable.IsIdentity, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToBoolean(value, CultureInfo.InvariantCulture);
- }
- }
- return false;
- }*/
- /*set {
- Debug.Assert(null != schemaTable.IsIdentity, "missing column IsIdentity");
- dataRow[schemaTable.IsIdentity] = value;
- }*/
- //}
- internal bool IsHidden {
- get {
- if (null != schemaTable.IsHidden) { // MDAC 62336
- object value = dataRow[schemaTable.IsHidden, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToBoolean(value, CultureInfo.InvariantCulture);
- }
- }
- return false;
- }
- /*set {
- Debug.Assert(null != schemaTable.IsHidden, "missing column IsHidden");
- dataRow[schemaTable.IsHidden] = value;
- }*/
- }
- internal bool IsLong {
- get {
- if (null != schemaTable.IsLong) { // MDAC 62336
- object value = dataRow[schemaTable.IsLong, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToBoolean(value, CultureInfo.InvariantCulture);
- }
- }
- return false;
- }
- /*set {
- Debug.Assert(null != schemaTable.IsLong, "missing column IsHidden");
- dataRow[schemaTable.IsLong] = value;
- }*/
- }
- internal bool IsReadOnly {
- get {
- if (null != schemaTable.IsReadOnly) { // MDAC 62336
- object value = dataRow[schemaTable.IsReadOnly, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToBoolean(value, CultureInfo.InvariantCulture);
- }
- }
- return false;
- }
- /*set {
- Debug.Assert(null != schemaTable.IsReadOnly, "missing column IsReadOnly");
- dataRow[schemaTable.IsReadOnly] = value;
- }*/
- }
- internal System.Type DataType {
- get {
- if (null != schemaTable.DataType) {
- object value = dataRow[schemaTable.DataType, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return(System.Type) value;
- }
- }
- return null;
- }
- /*set {
- Debug.Assert(null != schemaTable.DataType, "missing column DataType");
- dataRow[schemaTable.DataType] = value;
- }*/
- }
- internal bool AllowDBNull {
- get {
- if (null != schemaTable.AllowDBNull) {
- object value = dataRow[schemaTable.AllowDBNull, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToBoolean(value, CultureInfo.InvariantCulture);
- }
- }
- return true;
- }
- /*set {
- Debug.Assert(null != schemaTable.AllowDBNull, "missing column MaybeNull");
- dataRow[schemaTable.AllowDBNull] = value;
- }*/
- }
- /*internal Int32 ProviderType {
- get {
- if (null != schemaTable.ProviderType) {
- object value = dataRow[schemaTable.ProviderType, DataRowVersion.Default];
- if (!Convert.IsDBNull(value)) {
- return Convert.ToInt32(value);
- }
- }
- return 0;
- }
- set {
- Debug.Assert(null != schemaTable.ProviderType, "missing column ProviderType");
- dataRow[schemaTable.ProviderType] = value;
- }
- }*/
- internal Int32 UnsortedIndex {
- get {
- return (Int32) dataRow[schemaTable.UnsortedIndex, DataRowVersion.Default];
- }
- }
- }
- }
|