1
我有一個奇怪的問題,這裏的設置:爲什麼在將對象轉換爲整數時會出現InvalidCastException?
ASP.NET 3.5應用程序/ MSSQLSERVER 2008後端。
我打電話的ExecuteScalar從我的代碼,它返回一個對象,然後我試圖鑄造該對象INT(其實我有一個通用的方法
T ConvertDBValue<T>(object o) {...}
,但是這並不重要)。
的ExecuteScalar被擊中以下存儲過程:
...
insert into ...
select scope_identity()
我的主鍵是一個標識字段,並返回85。接下來的事情我是InvalidCastException的嘗試投放85爲int。
的解決方案是從存儲過程返回之前,創建一個int變量,並分配SCOPE_IDENTITY()把它如下:
...
DECLARE @x int
insert into ...
select @x = scope_identity()
select @x
有人可以告訴我什麼是我的第一個方法的問題,爲什麼不把它投射到int?
這是記錄在哪裏? – 2009-10-03 03:05:46
請參閱說明返回類型的鏈接部分... – 2009-10-03 03:14:01
它表示它返回'numeric(38,0)',而不是'bigint'?無論哪種方式,您都可以通過幾種方式解決這個問題,無論是在代碼中還是在SQL中。在SQL中,你可以這樣做'SELECT CAST(SCOPE_IDENTITY()as int)',或者在你的C#中,你可以這樣做'int x = Convert.ToInt32(whatever)'。但是,正如原來的海報發現,使用輸出或返回參數當然會否定這種需要... – Funka 2010-03-10 01:31:55