DataReader работает лениво, поэтому он не собирает весь набор строк перед началом. Это оставляет вам два варианта:
- Итерация и подсчет
- Количество в операторе SQL.
Поскольку я больше разбираюсь в SQL, я подсчитаю в выражении SQL:
cmd.CommandText = "select count(id) from myTable where word = '" + word + "';";
cmd.CommandType = CommandType.Text;
int RowCount = 0;
RowCount = Convert.ToInt32(cmd.ExecuteScalar());
cmd.CommandText = "select id from myTable where word = '" + word + "';";
SQLiteDataReader reader = cmd.ExecuteReader();
//...
Обратите внимание, как я считал *, а не id в начале. Это потому, что count (id) будет игнорировать идентификаторы, в то время как count (*) будет игнорировать только полностью нулевые строки. Если у вас нет нулевых идентификаторов, используйте счетчик (id) (это немного быстрее, в зависимости от размера таблицы).
Обновление: изменено на ExecuteScalar, а также количество (id) на основе комментариев.