2012-05-14 4 views
3

Хорошо, либо я действительно устал, либо действительно толст в данный момент, но я не могу найти ответ на этот вопросКак получить результат ADO.NET SqlCommand?

Я использую ASP.NET, и я хочу найти количество строк в моем Таблица.

Я знаю, что это код SQL: select count(*) from topics, но как HECK я получаю это для отображения в виде числа?

Все, что я хочу сделать, это запустить этот код, и если он = 0 отображает одну вещь, но если это больше, чем 0, отобразите что-нибудь еще. Помоги пожалуйста?

Это то, что я до сих пор

string selectTopics = "select count(*) from topics"; 
// Define the ADO.NET Objects 
SqlConnection con = new SqlConnection(connectionString); 
SqlCommand topiccmd = new SqlCommand(selectTopics, con); 
if (topiccmd == 0) 
    { 
     noTopics.Visible = true; 
     topics.Visible = false; 
    } 

, но я знаю, что я что-то серьезно неправильно хватает. Я искал целую вечность, но ничего не могу найти.

PHP намного проще. :)

+2

Если вам нужно только решить, есть или нет записей в таблице, я рекомендую что-то вроде «ВЫБЕРИТЕ СЛУЧАЙ, КОГДА СУЩЕСТВУЕТ (ВЫБОР * ОТ тем) ТОГДА 1 ВЫШЕ 0 КОНЕЦ». Это избавит вас от необходимости сканировать всю таблицу/индекс. – 8kb

+0

Тогда что бы я напечатал, чтобы запустить это для моего кода? – dpDesignz

ответ

10

Обратите внимание, что вы должны открыть соединение и выполнить команду, прежде чем сможете получить доступ к результатам запроса SQL. ExecuteScalar возвращает значение значение результата (в случае, если ваш запрос вернет несколько столбцов и/или несколько строк, следует использовать разные методы).

Обратите внимание на использование конструкции using, которая будет безопасно закрывать и утилизировать соединение.

string selectTopics = "select count(*) from topics"; 
// Define the ADO.NET Objects 
using (SqlConnection con = new SqlConnection(connectionString)) 
{ 
    SqlCommand topiccmd = new SqlCommand(selectTopics, con); 
    con.Open(); 
    int numrows = (int)topiccmd.ExecuteScalar(); 
    if (numrows == 0) 
    { 
     noTopics.Visible = true; 
     topics.Visible = false; 
    } 
} 
+1

Рассмотрите возможность использования ОФ и покажите, как очистить соединение после этого (в идеале с помощью блока 'using') ... :) –

+0

был в этом благодарен, есть также = vs == и литье, не стесняйтесь улучшать его – Gratzy

+0

Я получаю следующую ошибку 'System.Data.SqlClient.SqlConnection не содержит определения для открытого и никакого метода расширения open ...'. Есть ли пространство имен, которое мне не хватает? И я забыл двойник ==. :) – dpDesignz

1

ExecuteScalar - это то, что вы ищете. (метод SqlCommand)

Btw, придерживайтесь C#, нет способа сделать PHP проще. Это просто знакомо.

+0

:). Правда. Просто используйте для PHP – dpDesignz

0

Вам необходимо открыть соединение Это может сработать:

SqlConnection sqlConnection1 = new SqlConnection("Your Connection String"); 
SqlCommand cmd = new SqlCommand(); 
SqlDataReader reader; 

cmd.CommandText = "select count(*) from topics"; 
cmd.CommandType = CommandType.Text; 
cmd.Connection = sqlConnection; 
sqlConnection1.Open(); 

reader = cmd.ExecuteReader(); 
// Data is accessible through the DataReader object here. 

sqlConnection1.Close(); 

Похожие Вопрос: C# 'select count' sql command incorrectly returns zero rows from sql server

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