這個存儲過程不保存數據,這似乎是VARBINARY
的問題。我通過一個byte[]
它,但它不起作用。如果我發送這個參數爲NULL
它的作品。如何使用程序保存byte []?
我打電話用下面的代碼的程序:
public Community AddCommunity(string name, string description, byte[] picture, User owner, int? venue, int communityID)
{
using (var database = new Database())
{
return database.Scope.GetSqlQuery<Community>("QP_AddCommunity ?, ?, ?, ?, ?, ?", "VARCHAR Name, VARCHAR Description, VARBINARY Picture, INTEGER Owner, INTEGER Venue, INTEGER ID").GetResult(name, description, picture, owner.ID, venue, communityID);
}
}
的過程如下:
CREATE PROCEDURE [dbo].[QP_AddCommunity]
@Name VARCHAR(120),
@Description VARCHAR(MAX),
@Picture VARBINARY(MAX),
@Owner INTEGER,
@Venue INTEGER,
@ID INTEGER
AS
BEGIN
SET NOCOUNT ON;
IF(SELECT COUNT(*) FROM QT_Community WHERE ID = @ID) = 0
INSERT INTO QT_Community(Name, [Description], Picture, [Owner], Venue) VALUES(@Name, @Description, @Picture, @Owner, @Venue);
ELSE
UPDATE QT_Community SET Name = @Name, [Description] = @Description, Picture = @Picture, [Owner] = @Owner, Venue = @Venue WHERE ID = @ID;
SELECT * FROM QT_Community WHERE ID = @@IDENTITY;
END
有什麼不對的代碼?是不是VARBINARY
a byte[]
?
此代碼在SQL Server Management Studio上執行時有效。
DECLARE @X varbinary(20)
Set @X = CAST('Testing' As varbinary(20))
EXECUTE [QP_AddCommunity] 'aaaaa', 'descricao', @X, 216, NULL, 0;
但是從GetSqlQuery
方法的東西在byte[]
打電話時的交易說,這是不活動的,不髒。但如果byte[]
是null
它的工作原理應該如此。
定義'不起作用'。你有錯誤嗎?插入/更新工作,但圖片丟失?插入/更新工作和圖片是否損壞?順便說一句,檢查COUNT(*)的代碼,然後在併發下插入或更新被破壞。你應該使用'MERGE' http://technet.microsoft.com/en-us/library/bb510625.aspx – 2010-09-24 14:45:24
'CommandParameter'在哪裏? – 2010-09-24 15:17:08