[英]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.