Моя C # программа подключается к базе данных SQL запроса пользователя, получает первый открытый запрос, обрабатывает его и помечает запрос как закрытый.Затем я получаю следующий открытый запрос.
Проблема в том, что я всегда получаю один и тот же запрос от SQL-запроса, хотя он помечен как «закрытый».Я подозреваю, что я получаю кэшированный результат вместо обновленных данных.Но я не знаю, как очистить этот кеш.
Я пытался избавиться от SQLDataAdpater и каждый раз создавать новый.Я также попытался добавить случайное число в качестве параметра к хранимой процедуре SQL Select.Никто из них не работал.
Может кто-нибудь помочь мне в этом вопросе?Спасибо.
Запрос Sql:
Select Top(1) RequestID, RequestType, RequestXML from Request
where RequestStatus='OP'
Команда обновления SQL:
begin tran
Update Request Set RequestStatus=@RequestStatus where RequestID=@RequestID;
if (@RequestXML is not null)
Update Request Set RequestXML=@RequestXML where RequestID=@RequestID;
commit tran
Код C #:
SqlDataAdapter da = new SqlDataAdapter("SrvGetOpenRequest", cn);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlCommand cmd = new SqlCommand("SrvUpdateRequest", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("RequestID", SqlDbType.Int);
cmd.Parameters.Add("RequestStatus", SqlDbType.Char);
cmd.Parameters.Add("RequestXML", SqlDbType.Xml);
DataTable dt = new DataTable();
cn.Open();
da.Fill(dt);
cn.Close();
while (dt.Rows.Count > 0)
{
// Process returned datatable here.
..............
cmd.Parameters["RequestStatus"].Value = "CL";
cn.Open();
cmd.ExecuteNonQuery();
// fetch the next request to process
da.Fill(dt);
cn.Close();
}
Я проверялбаза данных и запись были помечены как закрытые.