C # SqlCeException: одна строка SQL для определения таблицы существует - PullRequest
2 голосов
/ 15 июня 2011

Следуя рекомендациям, представленным в SO Question # 167576 , я создал следующую строку запроса SQL в моем C # WinForm приложении , чтобы определить, существует ли таблица 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 ]

3 голосов
/ 15 июня 2011

SELECT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='RMCoil') могли бы сделать трюк?
Вы также должны были бы сделать ExecuteScalar() вместо ExecuteNonQuery() Я думаю, чтобы восстановить вашу ценность ...

Как очень мудро указал Пол Сасикследующий запрос еще лучше:
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='RMCoil'

0 голосов
/ 17 июня 2011

Это на самом деле сделало лучший тест:

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