2013-10-05 4 views
1

После бессонной ночи и пробегайте через stackoverflow, я не смог найти метод (функцию), который может решить мою проблему.Как получить количество строк в таблице в mysql

То, что я написал, является очень сложным для сервера. Есть ли более умный способ решить эту проблему?

Вот мой код:

public static int GetIndexLong(string TblName) 
{ 
    int rowsNbr = 0; 
    using(MySqlConnection conn = new MySqlConnection(PublicVariables.cs)) 
    { 
     using(MySqlCommand cmd = new MySqlCommand("SELECT * FROM " + TblName, conn)) 
     { 
      conn.Open(); 
      using (MySqlDataReader reader = cmd.ExecuteReader()) 
      { 
       while (reader.Read()) 
       { 
        ++rowsNbr; 
       } 
      } 
      return rowsNbr; 
     } 
    } 
} 

Это делает работу, но я знаю, что это не хороший способ.

Работа с C# Express 2008 на .NET 4.0.

+3

'SELECT COUNT (*) FROM TableName' – Hammerite

ответ

3

Вы искали:

SELECT COUNT(*) FROM TableName 

В коде это будет так:

using(MySqlCommand cmd = new MySqlCommand("SELECT COUNT(*) FROM " + TblName, conn)) 

или если вы хотите, чтобы вернуть количество строк, вероятно, может попробовать это тоже: -

using (MySqlCommand cmd = new MySqlCommand("SELECT COUNT(*) FROM " + TblName, conn)) 
{ 
    conn.Open(); 
    return Convert.ToInt32(cmd.ExecuteScalar()); 
} 
+0

Когда я это делаю, я не пытаюсь восстановить число строк. –

+0

Не получил ваш вопрос правильно, но это то, что вы хотите? com.CommandText = "select @@ ROWCOUNT"; var totalRow = com.ExecuteScalar(); –

+0

@IsmailGunes: - Обновлен мой ответ! Это помогает? –

2

Право запроса для работы является:

SELECT count(*) FROM + TblName 

(Но это на самом деле не имеет ничего общего с C#.)

# замена кода C в вашем случае будет:

using(MySqlCommand cmd = new MySqlCommand("SELECT COUNT(*) FROM " + TblName, conn)) 
{ 
    conn.Open(); 
    return int.Parse(cmd.ExecuteScalar().ToString()); 
} 
+0

Спасибо, что это работает. , Но так же решения, которые я нашел по вашему пути (executescalar), не работали. Ты отлично работаешь. Кстати, я пробовал счетчик SELECT (*), но я не знал, как отступить, это ответ на ваше замечание. –

+0

@ IsmailGunes: Не стесняйтесь принять ответ. –

Смежные вопросы