Skip to content Skip to sidebar Skip to footer

What Data Type Does The Sqlcommand Method Executescalar() Return?

In SQL Server, ID is a not null integer, and an identity. When I run the following code, I get an InvalidCastException on the last line: SqlCommand cmd = new SqlCommand(); cmd.Co

Solution 1:

SCOPE_IDENTITY() returns a decimal in code, otherwise known as NUMERIC(38,0) in TSQL.

http://msdn.microsoft.com/en-us/library/ms190315.aspx

So if you want a direct cast, you can do (int)(decimal)cmd.ExecuteScalar();. Note that a decimal to int conversion can lose information in the strictest sense, so just be advised. But with your identity column being an integer, the conversion will be safe.

Solution 2:

It's probably returning a boxed instance of a different numeric type, such as long. A boxed long cannot be converted to int.

You can call GetType() on the return value to see what type it really is.

Solution 3:

From the end of your INSERT statement

SELECT SCOPE_IDENTITY()

It's returning the identity value of the row inserted into the [Users] table.

Post a Comment for "What Data Type Does The Sqlcommand Method Executescalar() Return?"