Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpSqOr 412 of 509 menu
◀ ▶

ExecuteScalar в C#

Метод ExecuteScalar возвращает объект первого столбца первой строки или null, если строк нет. Удобно для COUNT, MAX и подзапросов с одним значением.

Две строки в таблице дают COUNT(*) равный 2:

<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); INSERT INTO t VALUES (1),(2)"; c.ExecuteNonQuery(); } using SqliteCommand q = db.CreateCommand(); q.CommandText = "SELECT COUNT(*) FROM t"; Console.WriteLine(q.ExecuteScalar());

На пустой таблице "visits" запрос COUNT(*) всё равно вернёт 0. Запрос столбца, когда строк нет, дал бы null, но ниже считают число строк:

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 visits (x INT)"; c.ExecuteNonQuery(); } using SqliteCommand q = db.CreateCommand(); q.CommandText = "SELECT COUNT(*) FROM visits"; Console.WriteLine(q.ExecuteScalar());

Создайте пустую таблицу "tickets" и выведите, сколько в ней строк.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить