我正在使用带有五个文本框的asp.net 4.5,C#和SQL Express。传递的值是0到99之间的数字。使用ExecuteNonQuery插入数字时,系统将挂起30秒或更长时间。
在VS调试期间,我验证了数据实际上已写入数据库,但是ExecuteNonQuery从未完成。
我尝试了几种方法,包括具有相同结果的转换(TryParse和Convert )。我还创建了一个只有五个文本框的简单测试页,但显示了相同的问题。硬编码和存储过程均无法解决此问题。使用SQLDatasource控件可以,但是更喜欢使用C#进行编码。这些字段仅用于数字,将在报告期间进行计算。 注意:我假设值需要从字符串转换为INT。
表结构:
[StatID] [int] IDENTITY(1,1) NOT NULL,
[Made2PT] [int] NULL, [Missed2PT] [int] NULL,
存储过程:
@Made2Pt Int, @Missed2pt Int
AS
BEGIN
INSERT INTO tblStatsV2(Made2Pt,Missed2pt)
VALUES (@Made2Pt,@Missed2pt)
示例,带有两个文本框的部分测试页面后面的C#代码:
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@Made2Pt", txtMade2PT.Text == "" ? 0 :
Convert.ToInt32(txtMade2PT.Text));
sqlCmd.Parameters.AddWithValue("@Missed2pt",txtMade2PT.Text == "" ? 0 :
Convert.ToInt32(txtMissed2PT.Text));`
其他页面后面的部分示例代码:
cmd.CommandType = CommandType.StoredProcedure;
if (int.TryParse(txt2ptMade.Text, out made2PT))
{
cmd.Parameters.Add("@Made2Pt", SqlDbType.Int).Value = made2PT;
}
我希望该条目能在不到一秒钟的时间内返回,因为我的其他页面具有快速响应。
答案 0 :(得分:0)
我没有做的是在不同的浏览器(Edge,Chrome,Opera ...)上测试了我的问题。我确实通过添加局部变量来修复存储过程,但这并不能消除问题。我发现该问题仅在Microsoft Edge上失败。扫描Microsoft的支持后,一个解决方案是删除KB修补程序。每种浏览器对数据的处理方式都不相同,因此可以预期在性能问题上会有不同的结果。希望对您有所帮助。