Пустой результат в C#
Пустой результат SELECT - нормальный случай,
не ошибка SQL. Read на ридере сразу
вернёт false, если таблица пуста или
условие WHERE не оставило ни одной строки.
Пустая таблица "t" без строк: первый
Read напечатает False в
консоли:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Data.Sqlite" Version="10.0.14" />
</ItemGroup>
</Project>
using Microsoft.Data.Sqlite;
using SqliteConnection db = new("Data Source=:memory:");
db.Open();
using (SqliteCommand c = db.CreateCommand())
{
c.CommandText = "CREATE TABLE IF NOT EXISTS t (x INT)";
c.ExecuteNonQuery();
}
using SqliteCommand q = db.CreateCommand();
q.CommandText = "SELECT x FROM t";
using SqliteDataReader r = q.ExecuteReader();
Console.WriteLine(r.Read());
Та же пустота бывает у условия WHERE 1=0:
строк нет, и Read сразу вернёт
false. Запрос COUNT(*) при этом
всё равно вернёт 0, а не null.
Сделайте выборку, которая заведомо ничего не
вернёт, и выведите 0, если строк нет.