Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I retrieve the result of an ADO.NET SqlCommand?

Ok either I'm really tired or really thick at the moment, but I can't seem to find the answer for this

I'm using ASP.NET and I want to find the amount of rows in my table.

I know this is the SQL code: select count(*) from topics, but how the HECK do I get that to display as a number?

All I want to do is run that code and if it = 0 display one thing but if it's more than 0 display something else. Help please?

This is what I have so far

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;
    }

but I know I'm missing something seriously wrong. I've been searching for ages but can't find anything.

PHP is so much easier. :)

like image 661
dpDesignz Avatar asked May 14 '12 03:05

dpDesignz


2 Answers

Note that you must open the connection and execute the command before you can access the result of the SQL query. ExecuteScalar returns a single result value (different methods must be used if your query will return an multiple columns and / or multiple rows).

Notice the use of the using construct, which will safely close and dispose of the connection.

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;
    }
}
like image 174
Gratzy Avatar answered Nov 14 '22 23:11

Gratzy


ExecuteScalar is what you're looking for. (method of SqlCommand)

Btw, stick with C#, there's no way PHP is easier. It's just familiar.

like image 45
McGarnagle Avatar answered Nov 14 '22 23:11

McGarnagle