2010-01-11 29 views
3

我想知道从SqlHelper类的ExecuteDataTable返回的c#中数据表中的哪些值为空。如何在SQL Server中使用c查找值是否为NULL#

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

除了大卫·M的方法,你也可以使用DataRow.IsNull

if (dr.IsNull(dc)) 
+0

我会使用它,因为它具有稍微更少的IL,并且稍微更高效(在处理数据时是一个好主意)。 – Codesleuth 2010-01-11 12:02:35

14

您需要DBNull.Value

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

如果(VDR [DC] == 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(")"); 
      } 
相关问题