2016-12-14 6 views
1

Итак, я создаю приложение для обмена сообщениями для проекта колледжа, и у меня есть база данных пользователей в Access, я правильно привязал базу данных и могу выполнять инструкции, но я борюсь с одним проблема, как подсчитать количество строк в таблице данных.Как считать все строки в таблице данных C#

Фактически, все, что я хочу сделать, - это подсчитать общее количество пользователей, и мой учитель сказал мне, чтобы я получил данные в DataTable и подсчитал количество строк. Тем не менее, независимо от того, сколько пользователей у меня есть в базе данных, он всегда возвращается как 2.

int UserCount = 0; 

     using (OleDbConnection cuConn = new OleDbConnection()) 
     { 
      cuConn.ConnectionString = @"DATASOURCE"; 
      string statement = "SELECT COUNT(*) FROM Users"; 

      OleDbDataAdapter da = new OleDbDataAdapter(statement, cuConn); 
      DataTable Results = new DataTable(); 
      da.Fill(Results); 
      if (Results.Rows.Count > 0) 
      { 
       UserCount = int.Parse(Results.Rows[0][0].ToString()); 
      } 
     } 

Приведенный выше код является копией того, что я был послан моим учителем, который сказал, что это будет работать. Любая помощь будет оценена по достоинству.

Кроме того, жаль, если это пустая трата времени, все еще привыкает к этому StackOverflow вещи ...

+1

Хотя это не лучший способ получить эту информацию, этот код должен работать. Если ... вы уверены, что ищете одну и ту же базу данных? Какова ваша настоящая строка соединения? – Steve

+0

Вы должны использовать DbCommand или SELECT * FROM Users, тогда вы можете использовать DataTable.Rows.Count – McNets

+0

@mcNets, почему вы хотите получить все данные строк только для того, чтобы ЗАПИСАТЬ их? Запрос верный, лучший способ - использовать ExecuteScalar, а не всю инфраструктуру, требуемую DataAdapter – Steve

ответ

0

Попробуйте заменить Users с [Users]? Потому что Users может быть ключевым словом базы данных. Также более простой способ получить агрегированные числа - ExecuteScalar.

using (OleDbConnection cuConn = new OleDbConnection()) 
    { 
     cuConn.ConnectionString = @"DATASOURCE"; 
     string statement = "SELECT COUNT(*) FROM [Users]"; 

     OleDbCommand cmd = new OleDbCommand (statement, cuConn); 
     cuConn.Open(); 
     int count = (int)cmd.ExecuteScalar(); 
     if (count > 0) 
     { 
      // 
     } 
     cuConn.Close(); 
    } 
0

Я успешно использовал свой точный код (за исключением строки соединения) с SQL сервером, так может быть, есть проблема с @ «DataSource» или MS Access.