設置:SQL結果不返回C#
- asp.net MVC
- SQL Server 2008 R2的
我有一個過程,以獲得消息列表發送。我想更新結果記錄,所以我不會無意中將相同的記錄重複兩次。無論我如何接近它,SSMS
都會生成正確的消息列表。但是,如果我使用相同的過程更新記錄,則C#不會得到任何結果。
我已經使用DataAdapter
這樣的嘗試:
var da = new SqlDataAdapter(cmd);
da.Fill(table);
和DataReader
這樣的:
var dataReader = cmd.ExecuteReader();
table.Load(dataReader);
dataReader.Close();
來填充我的DataTable
,似乎都不影響使用效果。
我的過程是這樣的:
ALTER PROCEDURE [dbo].[MnxNoticeGetMessages]
@sessionId uniqueidentifier = null
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Output TABLE (messageid uniqueidentifier)
INSERT INTO @Output
SELECT messageid FROM MnxTriggerEmails WHERE dateSent is null
SELECT * FROM MnxTriggerEmails WHERE messageid IN (SELECT messageid FROM @Output)
UPDATE MnxTriggerEmails SET dateSent=GETDATE()
WHERE messageid IN (SELECT * FROM @Output)
END
這產生SSMS
的結果,但不是在C#
。
如果我註釋掉UPDATE
像這樣(沒有其他變化):
--UPDATE MnxTriggerEmails SET dateSent=GETDATE()
-- WHERE messageid IN (SELECT * FROM @Output)
我得到兩個SSMS
和C#
預期的結果。
我錯過了什麼?什麼會造成這種情況?我如何更新記錄並同時獲得結果?
您是否嘗試過使用'dataReader'的'Read()'方法來調試您的代碼? – Xint0
不,您是否認爲select方法會影響DataReader的使用方式並加載信息?我沒有得到錯誤,我只是沒有在數據表中得到結果。 – davids
您是否嘗試過在更新後移動選擇? –