любой способ обнаружить столбец TimeStamp в DataTable из SQL Server (fillSchema ???) - PullRequest
1 голос
/ 12 февраля 2009

При обновлении таблицы данных из «select * from sometable» я перебираю столбцы в таблице данных для динамического создания оператора обновления или вставки на основе datatable.rowstate и DataTable.PrimaryKey.

Однако я не могу найти какое-либо свойство, которое указывает, является ли столбец меткой времени в SQL Server и поэтому должно игнорироваться в операторе обновления !!!

Ответы [ 2 ]

0 голосов
/ 12 февраля 2009

Попробуйте использовать метод GetSchemaTable класса SqlDataReader. Он вернет метаданные для каждого столбца. Конкретные свойства, которые вас заинтересуют - это DataTypeName и isRowVersion.

string sql = "SELECT * FROM SomeTable";
using ( SqlConnection cn = new SqlConnection ())
{
   cn.ConnectionString = "Your Connection String";
   cn.Open ();
   using ( SqlCommand cmd = new SqlCommand ( sql, cn ) )
   {
      SqlDataReader dataReader = cmd.ExecuteReader ( CommandBehavior.KeyInfo );
      dataReader.Read ();

      DataTable dt = dataReader.GetSchemaTable ();
      foreach ( DataRow r in dt.Rows )
      {
        Console.WriteLine ( "Column name: {0}\t Data Type: {1}\t IsRowVersion:{2}", r["ColumnName"].ToString (), r["DataTypeName"].ToString (), r["isRowVersion"].ToString() );
      }

    }
 }
0 голосов
/ 12 февраля 2009

Я бы сказал, что вам нужно знать типы строк заранее. Если вы не написали сценарий SQL, который описал таблицу, из которой вы копируете, и искал формат отметки времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...