What data type does the SQLCommand method ExecuteScalar() return?

后端 未结 3 1063
温柔的废话
温柔的废话 2021-01-18 16:08

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         


        
相关标签:
3条回答
  • 2021-01-18 16:19

    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.

    0 讨论(0)
  • 2021-01-18 16:20

    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.

    0 讨论(0)
  • 2021-01-18 16:23

    From the end of your INSERT statement

    SELECT SCOPE_IDENTITY()
    

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

    0 讨论(0)
提交回复
热议问题