C#SqlCeException:确定表的一行SQL存在

时间:2011-06-15 18:54:41

标签: c# winforms sql-server-ce

遵循SO Question #167576中提供的指南,我在 C#WinForm应用程序中构建了以下SQL查询字符串,以确定表RMCoil是否存在:

using (SqlCeCommand cmd = new SqlCeCommand(null, new SqlCeConnection(Connection))) {
  cmd.Connection.Open();
  cmd.CommandText =
    "IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='RMCoil') " +
    "SELECT 1 ELSE SELECT 0";
  if (cmd.ExecuteNonQuery() < 1) {
    // code to create table
  }
}

执行非查询会抛出此SqlCeException

  

解析查询时出错。 [令牌行号= 1,令牌行偏移= 1,令牌错误= IF]

我是SqlCeServer的新手。有人可以告诉我如何在一行中执行这个查询吗?

2 个答案:

答案 0 :(得分:3)

SELECT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='RMCoil')可以解决这个问题吗? 您还必须ExecuteScalar()而不是ExecuteNonQuery()我想要检索您的价值......

正如Paul Sasik非常明智地指出的那样,以下问题甚至更好:
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='RMCoil'

答案 1 :(得分:0)

这实际上是一个更好的测试:

SELECT CASE WHEN EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='RMCoil') THEN 1 ELSE 0 END