繁体   English   中英

检查列是否存在,然后使用 C# 从表中进行选择

[英]Check if column exists and then do selects from table using C#

请任何人都可以指出我正确的方向。 我想检查该列是否存在,如果存在则执行此 select 否则执行另一个 select

    select case 
   when exists (
      SELECT *
      FROM Sys.columns c 
      WHERE c.[object_id] = OBJECT_ID('dbo.Municipality') 
         AND c.name = 'AmountTypeLabel'
   )  
   then 1
   else 0
 end

这检查列是否存在,然后返回 0 或 1 但没有列名,所以我无法在 C# 中检查它

这是我在 C# 中尝试过的,但正如我之前所说,没有列名

DataTable DT;
        string SQL = "";
        try
        {

            SQL = "select case " +
                  " when exists( " +
                  "  SELECT 1 " +
                  "  FROM Sys.columns c " +
                  " WHERE c.[object_id] = OBJECT_ID('dbo.Municipality')" +
                  "  AND c.name = 'AmountTypeLabel'" +
                  ")" +
                  " then 1 " +
                  " else 0 " +
                  " end ";
            DT = Conn.ExecuteDT(SQL);
        }
        catch (Exception ex)
        {
            throw new Exception("Unable to get Tables", ex);
        }
        return DT;
    }

使用现有代码,您可以使用以下代码获取值并将其用于另一个 function:

if(DT.Rows[0][0].ToString() == "1")
 //Do Something

或者您可以在 SQL 查询中使用SQL Alias ,如下所示:

" end AS ColumnExists";

然后你可以在你的其他 function 中参考这个。 下面的示例片段 -

 if(DT.Rows[0]["ColumnExists"].ToString() == "1")
    //Do Something

On a side note ,如果要求仅从 SQL 服务器获取1 or 0 ,则使用 Matteo1010 在评论中提到的ExecuteScalar

 var columnExists = cmd.ExecuteScalar();
 if(columnExists.ToString() == "1")
  //Do Something

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM