我已阅读了许多与此问题相关的答案,我仍在寻找解决方案。 C#ASP MVC4 Navicat(SQL Server 2008)是环境,应用程序是扫描标签制造商。以下语句在C#中被称为参数化查询(稍加修改,是的,它应该是upc_code = itemnum):
INSERT INTO MyTable1(ITEM, UPC, BRAND, DESC, SIZE, PRICE, DIST, SALEPRICE, LOC, LABEL, NEWPRICE, TAX, MARKUP, ALLDISC, DIST2, RECNUMBER, userID, HasBeenDownloaded)
OUTPUT Inserted.BRAND, Inserted.SIZE, Inserted.PRICE
SELECT TOP 1 I.ITEM, I.UPC, I.BRAND, I.DESC, I.SIZE, I.PRICE, V.DIST, I.SALEPRICE, @LOCATION, I.LABEL, I.NEWPRICE, I.TAX, I.MARKUP, I.ALLDISC, V.DIST2, @RECNUM, @userID, @HasBeenDownloaded
FROM MyTable2 I, MyTable3 V
WHERE I.UPC_CODE = @ITEMNUM AND V.ITEM_NUM = I.ITEM_NUM
对于大约18次扫描(一个用户,每2秒大约扫描1次),一切都完美无缺,然后服务器无限期挂起。即使我反复扫描相同的项目,服务器也会挂起大约18个查询,表明它不是查询中的值。
C#代码确实使用了reader而不是executeNonQuery,但这只是因为我需要将输出注入到视图中:
using (IDataReader reader = theCmd.ExecuteReader())
{
while (reader.Read())
{
retVal.Add("Brand", reader["BRAND" ].ToString());
retVal.Add("Size", reader["SIZE" ].ToString());
retVal.Add("Price", reader["PRICE"].ToString());
break;
}
}
记住我没有SQLMS,而且我正在使用Navicat,那里有没有可以指导我调试问题的DBA?或者,是否有任何程序员有想法和/或更好的方法来检索SQL输出值?