0

因此,我需要使用TextBox. 我试图用 LINQ 做到这一点,但这需要很长时间......

第一个问题:最好的解决方案是什么?

我注意到,如果我在 SQL (MSSQL) 中运行更新,它只需要 20-30 秒,这是可以接受的时间。

第二个问题:我应该在 SQL 中创建程序并将它们导入我的项目并调用程序吗?这会给我更好的时间吗?基本上,使用导入的过程是否会缩短该查询在 SQL 中运行所需的时间?

4

3 回答 3

0

如果通过普通查询运行它更快,请创建一个接受参数的存储过程:

using (SqlConnection con = new SqlConnection("connection string here")) {
    using (SqlCommand cmd = new SqlCommand("sp_Stored_Proc_Name_Here", con)) {
      cmd.CommandType = CommandType.StoredProcedure;

      cmd.Parameters.Add("@VariableNameHere", SqlDbType.VarChar).Value = textBoxNameHere.Text;

      con.Open();
      cmd.ExecuteNonQuery();
    }
}
于 2013-04-10T02:39:37.367 回答
0

存储过程应该是最好的解决方案。

但是,您可以使用 ADO.NET 调用这些存储过程,而无需将它们导入您的项目中。

存储过程是 SQL 注入安全的

于 2013-04-10T02:40:17.817 回答
0

使用它在您的应用程序上获得高性能:

1) 创建一个在调用它时接受 TVP(表值参数)的存储过程。

2) 确保您的 TVP 使用与目标表的预期索引匹配的列数据类型中的表值数据类型(以便 SQL 可以有效地使用索引或任何所需的内容)。

3)在您的过程中使用正确的事务隔离级别。例如,“READ COMMITTED”,它给出了很好的响应。

4) 将“SET NOCOUNT ON”添加到您的存储过程中,因此每次执行 T-SQL 语句时,该过程都不会向 ADO.Net 发出信号。

5) 在您的 SqlConnection 对象上(在 C# 中),将 PacketSize 属性设置为介于 3000 和 8000 之间的某个值。使用这些值直到获得正确的响应时间。http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.packetsize.aspx

于 2014-05-06T15:28:37.367 回答