2010-01-11 3 views
3

Я хотел бы знать, какие значения имеют значение null в datatable в C#, который возвращается из класса ExecuteDataTable класса SqlHelper.Как найти значение NULL в SQL Server с помощью C#

string select = "select * from testTable"; 
string val=""; 

DataTable dt=dbcon.ExecuteDataTable(select); 
foreach (DataRow dr in dt.Rows) 
{ 
    foreach (DataColumn dc in dt.Columns) 
    { 
     if(dr[dc].Equals (null)) 
     { 
      val ="null"; 
     } 
     else 
     { 
      val = dr[dc].ToString(); 
     } 
    } 
} 

Но, к сожалению, я не нашел никакого способа сделать это. Пожалуйста, дайте мне знать, если есть способ. Заранее спасибо.

ответ

6

Как метод David M, вы можете также использовать DataRow.IsNull:

if (dr.IsNull(dc)) 
+0

Я бы использовал это, поскольку он имеет немного меньше ИЛ и немного более эффективен (хорошая идея при работе с данными). – Codesleuth

14

Вам нужно DBNull.Value:

if (dr[dc] == DBNull.Value) 
0

если (д-р [постоянного тока] == DBNull.Value) работал! Вот почему мне это нужно. Он создает сценарий вставки для данного имени таблицы.

String tableName= "mytable"; 

      string select = "select * from "+tableName ; 
      DataTable dt=dbcon.ExecuteDataTable(select); 
      StringBuilder sb = new StringBuilder(); 
      string pk=""; 

      sb.AppendFormat ("select Name from sys.columns where Object_ID = Object_ID('{0}') and is_identity=1",tableName); 
      try 
      { 
       pk = dbcon.ExecuteScalar(sb.ToString()).ToString(); 
      } 
      catch 
      { } 
      sb.Remove(0, sb.Length); 
      foreach (DataRow dr in dt.Rows ) 
      { 
       sb.Append("Insert INTO " + tableName + " VALUES("); 
       foreach (DataColumn dc in dt.Columns) 
       { 
        if (dc.ColumnName != pk) 
        { 
         string val = dr[dc].ToString(); 

         if (dr[dc] == DBNull.Value) 
         { 
          sb.AppendFormat("{0} , ", "null"); 
         } 
         else 
         { 
          sb.AppendFormat("'{0}' , ", dr[dc].ToString()); 
         } 
        } 
       } 
       sb.Remove(sb.Length - 2, 2); 
       sb.AppendLine(")"); 
      } 
Смежные вопросы