我想現在已經太晚了,我太累了,看不清我做錯了什麼。下面是我想:插入時從SQL Server獲取SCOPE_IDENTITY
int imageId = imageDal.AddImage(new SqlParameter[]
{
new SqlParameter("@IMAGE_ID",
SqlDbType.Int, Int32.MaxValue, ParameterDirection.Output,
true, 0, 0,"IMAGE_ID", DataRowVersion.Current,DBNull.Value),
new SqlParameter("@IMAGE",
SqlDbType.Image, 11, ParameterDirection.Input,
true, 0, 0,"IMAGE", DataRowVersion.Current,image)
});
public int AddImage(SqlParameter[] spParams)
{
SqlHelper.ExecuteNonQuery(BaseDAL.ConnectionStringImages, INSERT_IMAGE_SQL, spParams);
return Convert.ToInt32(spParams[0].Value);
}
存儲過程:
[dbo].[sp_insert_image]
-- Add the parameters for the stored procedure here
@IMAGE_ID int OUT,
@IMAGE image
AS
BEGIN
INSERT INTO images
(IMAGE)
VALUES
(@IMAGE)
SELECT @IMAGE_ID = SCOPE_IDENTITY();
END
GO
我得到的DBNull爲spParams [0] .value的。我試着將@IMAGE_ID的值設置爲存儲過程中的一個常量,但它沒有改變任何東西,所以問題不在我的存儲過程中(這就是我的想法)。
當我執行從SQL Management Studio中的過程中,我看到了inserted_id返回..
看着它,這一切看起來理智的;例如,你已經設定了方向;我*假設*'INSERT_IMAGE_SQL'設置爲'[dbo]。[sp_insert_image]';我想知道是不是'SqlHelper'是歪曲事情,但這似乎......奇怪。 –
它一定有什麼問題。如果我找不到解決方案,我將重新啓動計算機:)是private static string INSERT_IMAGE_SQL =「sp_insert_image」; 此外,該過程運行順利,行被插入,但我不能得到它的ID - 換句話說,在convert.toint32得到異常.. – Pabuc
你引用'sp_insert_image',而不是'[dbo]。[sp_insert_image]' - 你的名字中是否有另外一個版本可以選擇?例如'[pabuc]。[sp_insert_image]'? –