Javascript C查询结果似乎被缓存-强制重新加载修改过的数据
我有一个两页的网站-一页显示文档列表,另一页编辑该文档的属性 现在,如果我编辑文档的属性,保存更改,我可以看到数据库中的数据已更改。但当我重新加载文档列表时,列表中包含了旧数据。点击refresh并显示修改后的数据 如果我跟踪这些更改,看起来确实返回了旧数据 我曾尝试在URL中传递刻度数,以使IE加载一个新版本,但它仍然显示数据的旧版本。即使我刷新了页面,页面也发生了变化——显示了相同的文档详细信息,并且显示了数据的旧版本,再次刷新,页面也会更新 我已经检查了基础数据库中的数据是否正在更改 那么接下面的电话Javascript C查询结果似乎被缓存-强制重新加载修改过的数据,javascript,c#,html,sql-server,Javascript,C#,Html,Sql Server,我有一个两页的网站-一页显示文档列表,另一页编辑该文档的属性 现在,如果我编辑文档的属性,保存更改,我可以看到数据库中的数据已更改。但当我重新加载文档列表时,列表中包含了旧数据。点击refresh并显示修改后的数据 如果我跟踪这些更改,看起来确实返回了旧数据 我曾尝试在URL中传递刻度数,以使IE加载一个新版本,但它仍然显示数据的旧版本。即使我刷新了页面,页面也发生了变化——显示了相同的文档详细信息,并且显示了数据的旧版本,再次刷新,页面也会更新 我已经检查了基础数据库中的数据是否正在更改 那么
using (nhs_patient_document_s documents = new nhs_patient_document_s(Properties.Settings.Default.DataConnectionEDM))
{
List<nhs_patient_document> found = documents.Select<nhs_patient_document>("nhs_patdoc_patientid", String.IsNullOrEmpty(criteria) ? String.Empty : criteria);
output = JsonConvert.SerializeObject(found);
}
最终,这是执行查询的代码
public List<T> Select<T>(String Field, String Value)
{
List<T> results = null;
String sql = String.Empty;
try
{
sql = (String.Format("select * From {0} Where {1} = '{2}'", TableName, Field, Value.Replace("'", "''")));
results = Execute<T>(sql, CommandType.Text);
}
catch (System.Exception e)
{
throw e;
}
finally
{
sql = String.Empty;
}
return results;
}
上面调用的execute函数如下:
protected List<T> Execute<T>(String CommandString, CommandType CommandType)
{
DataSet dataSet = null;
SqlConnection connection = null;
SqlCommand command = null;
SqlDataAdapter dataAdapter = null;
List<T> results = null;
try
{
connection = new SqlConnection(connectionString);
command = new SqlCommand(CommandString, connection);
command.CommandType = CommandType;
command.CommandTimeout = 0;
if (connection.State != ConnectionState.Open) connection.Open();
dataSet = new DataSet();
dataAdapter = new SqlDataAdapter(command);
dataAdapter.Fill(dataSet);
results = ExtractData<T>(dataSet);
}
catch ( System.Exception e)
{
throw e;
}
return results;
}
我能强迫它从服务器获取新数据吗
PS感谢其他框架的建议,但我写这篇文章的时间很短,没有时间学习它们。找到了它,问题不在于SQL或C中的缓存,而在于jquery调用ajax的方式。基本上jquery是在缓存结果 我需要补充一点
cache: false
到ajax调用
$.ajax({
url: 'PatientGetdocuments.ashx?patientid=' + patientid,
cache: false,
success: function (result) {
.
.
.
});
}
});
谢谢你对SQL注入有多么开放的评论,但是今天我有一个很短的期限来完成它——我会考虑改变代码的那部分来避免这个问题。< /P>它是由浏览器1缓存的吗?不要抓。。。{throw e;}-它重新定义异常的起源,最后是{sql=String.Empty;}-它是无用的。2.尽快关闭连接。3.使用参数化查询。可能是,但这就是为什么我在组成url的页面中添加了一个额外的参数,以便在返回页面时有所不同。当然,在浏览器上点击刷新会显示更新的数据。这段代码非常可怕。它似乎对sql注入非常开放。Select*很糟糕,但是从任何数据中检索所有数据的通用方法是一个非常糟糕的主意。这就像创建一个dotnet方法,它可以根据传入的对象对任何对象执行任何操作。看看dapper,就缓存而言,它是非常棒的,如果它是broswer缓存,请在这里查找一些提示