2014-12-13 2 views
0

это то, как я пришел в проблему, я хотел бы узнать, сколько использует там на мой сайтNUM строки имеет проблемы при вводе сколько

Я попытался сделать это следующим образом.

SqlConnection conn1 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString()); 
    SqlCommand cmd1 = new SqlCommand(); 
    cmd1.Connection = conn1; 

    cmd1.CommandText = "SELECT COUNT(*) FROM brugere"; 

    conn1.Open(); 
    SqlDataReader reader3 = cmd1.ExecuteReader(); 
    if (reader3.HasRows) 
    { 
     LabelBrugerantal.Text = reader3["id"].ToString(); 
    } 
    conn1.Close(); 

Это таким образом, что она появляется с ошибкой здесь:

ид

Описание: Необработанное исключение при выполнении текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.

Сведения об исключении: System.IndexOutOfRangeException: идентификатор

Источник ошибки:

Line 67:   if (reader3.HasRows) 
Line 68:   { 
Line 69:    LabelBrugerantal.Text = reader3["id"].ToString(); 
Line 70:   } 
Line 71:   conn1.Close(); 

ответ

1

Вы не столбец id не вернулся на свой запрос. Вы могли бы сделать что-то вроде:

cmd1.CommandText = "SELECT COUNT(*) AS id FROM brugere"; 

Но это звучит странно :-)

Предпочтительный способ сделать то, что вы хотите SqlCommand.ExecuteScalar. Ваш код будет так (непроверенным):

cmd1.CommandText = "SELECT COUNT(*) FROM brugere"; 
// ... 
LabelBrugerantal.Text = ((Int32)cmd1.ExecuteScalar()).ToString(); 

Нет необходимости открывать для чтения и проверок для возвращенных строк, когда вы получаете одно скалярное значение из запроса

+0

Спасибо за быструю и хорошую помощь! ! :) –

+0

Это не предпочтительный способ получить счет. Я отредактирую свой ответ – Jcl

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