In my table in databse I have a column called "Cena" with the type of Integer. I need to SUM these columns to count the whole "Cena" of the table.
To do it I'm using SqlCommand and the method ExecuteScalar().
string sqlString = string.Format("Select Sum(Cena) From Ksiazki");
int returnValue ;
SqlCommand sqlComm = new SqlCommand();
sqlComm.CommandText = sqlString;
sqlComm.Connection = sqlConn;
returnValue = (int)sqlComm.ExecuteScalar();
It works fine as long as I got any record in the table, but when my table in database is empty it crashes.
To be honest I have no idea why it happens like that, so I would be really thankful if someone could tell me what's wrong when the table is empty and why it just doesn't return 0.
Your SQL query is returning a NULL when the table is empty. You cannot cast this return value to an int
, which is why C# is throwing an error.
If you're using SQL Server, you can check for NULL and replace with 0 in the database.
Select Isnull(Sum(Cena), 0) From Ksiazki
You can also use Coalesce
, which is the more general form of Isnull
(and is actually part of the SQL standard).