sqlCommandText = "SELECT * FROM table WHERE id='"+Id+"'"; // Смущает +Id+, так вроде не пишут, нужно @?
Правильно, что смущает.
1. SELECT * лучше не писать. Лучше писать конкретные поля, которые тебе нужны
2. Вместо конкатенации следует использовать параметризованные запросы. При использовании EF Core и Dapper их можно делать через интерполяцию, но тут придётся ручками добавлять параметры в свойство Parameters
using var command = new SqliteCommand
{
CommandText = "SELECT id, txt, floating_point, raw_bytes FROM table WHERE id=$id",
Parameters = {
new SqliteParameter("$id", 123)
},
Connection = new SqliteConnection() // Тут стоит подставить настоящий connection
};
using var reader = await command.ExecuteReaderAsync(); // Вместо async-await можно использовать и синхронные методы
var data = new List<(int id, string text, double floatingPoint, byte[] blob>(); // Вместо кортежа можно нормальный тип
while (await reader.ReadAsync())
{
var id = await reader.GetFieldValueAsync<int>(0); //integer
var text = await reader.GetFieldValueAsync<string>(1); //text
var value = await reader.GetFieldValueAsync<double>(2); // real
var blob = await reader.GetFieldValueAsync<byte[]>(3); // blob
data.Add((id, text, value, blob));
}