Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript C查询结果似乎被缓存-强制重新加载修改过的数据_Javascript_C#_Html_Sql Server - Fatal编程技术网

Javascript C查询结果似乎被缓存-强制重新加载修改过的数据

Javascript C查询结果似乎被缓存-强制重新加载修改过的数据,javascript,c#,html,sql-server,Javascript,C#,Html,Sql Server,我有一个两页的网站-一页显示文档列表,另一页编辑该文档的属性 现在,如果我编辑文档的属性,保存更改,我可以看到数据库中的数据已更改。但当我重新加载文档列表时,列表中包含了旧数据。点击refresh并显示修改后的数据 如果我跟踪这些更改,看起来确实返回了旧数据 我曾尝试在URL中传递刻度数,以使IE加载一个新版本,但它仍然显示数据的旧版本。即使我刷新了页面,页面也发生了变化——显示了相同的文档详细信息,并且显示了数据的旧版本,再次刷新,页面也会更新 我已经检查了基础数据库中的数据是否正在更改 那么

我有一个两页的网站-一页显示文档列表,另一页编辑该文档的属性

现在,如果我编辑文档的属性,保存更改,我可以看到数据库中的数据已更改。但当我重新加载文档列表时,列表中包含了旧数据。点击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缓存,请在这里查找一些提示