C# 斯蒂恩被否决了?我不介意投反对票,但我希望得到某种类型的反馈,以便我能够改进。所以,谢谢。更重要的是,为什么要执行来自用户的任意SQL语句?这是非常危险的,会导致“用户”篡改您的数据库。我同意BanksySan的观点。这是个糟糕的主意。如果您想阻止用户做某

C# 斯蒂恩被否决了?我不介意投反对票,但我希望得到某种类型的反馈,以便我能够改进。所以,谢谢。更重要的是,为什么要执行来自用户的任意SQL语句?这是非常危险的,会导致“用户”篡改您的数据库。我同意BanksySan的观点。这是个糟糕的主意。如果您想阻止用户做某,c#,sql,sql-server,entity-framework,linq,C#,Sql,Sql Server,Entity Framework,Linq,斯蒂恩被否决了?我不介意投反对票,但我希望得到某种类型的反馈,以便我能够改进。所以,谢谢。更重要的是,为什么要执行来自用户的任意SQL语句?这是非常危险的,会导致“用户”篡改您的数据库。我同意BanksySan的观点。这是个糟糕的主意。如果您想阻止用户做某些事情,请使用权限。如果有不应该编写查询的用户,您可以为他们创建报告……此外,如果您没有处理事务对象,请将其包装起来。您需要使用将其包装在一个中,尽管完全不使用它可能会更好。API是有限的,因此用户无法执行删除或删除,这是QA团队的内部网站。Q



斯蒂恩被否决了?我不介意投反对票,但我希望得到某种类型的反馈,以便我能够改进。所以,谢谢。更重要的是,为什么要执行来自用户的任意SQL语句?这是非常危险的,会导致“用户”篡改您的数据库。我同意BanksySan的观点。这是个糟糕的主意。如果您想阻止用户做某些事情,请使用权限。如果有不应该编写查询的用户,您可以为他们创建报告……此外,如果您没有处理
事务
对象,请将其包装起来。您需要使用将其包装在一个
中,尽管完全不使用它可能会更好。API是有限的,因此用户无法执行删除或删除,这是QA团队的内部网站。QA团队只能执行来自不同网络环境的查询,所以他们不能删除任何内容。另外,为什么问题被否决?我不介意否决票,但我希望得到某种类型的反馈,这样我可以在中改进,感谢该方法需要一个DataTable,我的问题是我不知道API将在您的代码中接收什么查询,您有
DataAdapter
,这样您就可以用页面填充它。它不依赖于查询。因此,我使用了您的答案,它可以工作,我对文档感到困惑,我仍然不知道它工作的确切原因,但确实如此,我使用了这个
dataAdapter.Fill(results,currentIndex,pageSize,results.DataSetName)非常感谢你们的帮助,method需要一个DataTable,我的问题是我不知道API将在你们的代码中接收什么查询,你们有
DataAdapter
,所以你们可以用页面填充它。它不依赖于查询。因此,我使用了您的答案,它可以工作,我对文档感到困惑,我仍然不知道它工作的确切原因,但确实如此,我使用了这个
dataAdapter.Fill(results,currentIndex,pageSize,results.DataSetName)所以感谢你们的帮助,这对我的问题没有帮助,但它帮助我分析查询如何影响服务器的内存等等。谢谢你的提示!是的,你应该深入了解你实际上在质疑什么。接受答案参考清楚地指出:DataAdapter通过Fill方法的重载提供了只返回一页数据的功能。但是,这可能不是在大型查询结果中分页的最佳选择,因为尽管DataAdapter仅使用请求的记录填充目标DataTable或DataSet,但返回整个查询的资源仍在使用。因此,尽管它在您的情况下有效,但资源使用量仍然可能非常大。问题似乎发生在结果存储在内存中时,而不是从SQL存储时,因此它可能不是最理想的选择,但它是有效的。我会走这条路,一旦我完全理解c#我会回来尝试重构或找到一种新的、更优化的方法这对我的问题没有帮助,但它帮助我分析查询如何影响服务器的内存等等。谢谢你的提示!是的,你应该深入了解你实际上在质疑什么。接受答案参考清楚地指出:DataAdapter通过Fill方法的重载提供了只返回一页数据的功能。但是,这可能不是在大型查询结果中分页的最佳选择,因为尽管DataAdapter仅使用请求的记录填充目标DataTable或DataSet,但返回整个查询的资源仍在使用。因此,尽管它在您的情况下有效,但资源使用量仍然可能非常大。问题似乎发生在结果存储在内存中时,而不是从SQL存储时,因此它可能不是最理想的选择,但它是有效的。我会走这条路,一旦我完全理解了c,我会回来尝试重构或找到一种新的、更优化的方法
public DataSet ExecuteMultipleQueries(string queries)
    {
        var results = new DataSet();
        using (var myConnection = new SqlConnection(_connectionString))
        {
            myConnection.Open();
            var sqlCommand = myConnection.CreateCommand();
            sqlCommand.Transaction = myConnection.BeginTransaction(IsolationLevel.ReadUncommitted);
            sqlCommand.CommandTimeout = AppSettings.SqlTimeout;
            sqlCommand.CommandText = queries.Trim();
            var dataAdapter = new SqlDataAdapter { SelectCommand = sqlCommand };
            dataAdapter.Fill(results);
            return results;
        }
    }