command.CommandTimeout
我正在尝试覆盖默认的SqlConnection
超时15秒,并收到一条错误消息,指出[
无法分配属性或索引器,因为它是只读的。
有没有解决的办法?
using (SqlConnection connection = new SqlConnection(Database.EstimatorConnection))
{
connection.Open();
using (SqlCommand command = connection.CreateCommand())
{
command.CommandType = CommandType.StoredProcedure;
connection.ConnectionTimeout = 180; // This is not working
command.CommandText = "sproc_StoreData";
command.Parameters.AddWithValue("@TaskPlanID", order.Projects[0].TaskPlanID);
command.Parameters.AddWithValue("@AsOfDate", order.IncurDate);
command.ExecuteNonQuery();
}
}
如果要为特定查询提供超时,那么CommandTimeout是前进的方向。
其用法是:
command.CommandTimeout = 60; //The time in seconds to wait for the command to execute. The default is 30 seconds.
您可以在连接字符串中设置超时值,但是在连接后它是只读的。您可以在http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectiontimeout.aspx
阅读更多内容正如Anil暗示的那样,ConnectionTimeout可能不是您所需要的;它控制建立新连接时ADO驱动程序将等待多长时间。您的用法似乎表明需要等待比通常的更长的时间来执行特定的SQL查询,在这种情况下,Anil是完全正确的。使用CommandTimeout(R / W)来更改单个SqlCommand的预期完成时间。
您总是可以将其添加到您的连接字符串中:
connect timeout=180;
更干净的方法是在xml文件中设置connectionString,例如Web.Confing(WepApplication)
或App.Config(StandAloneApplication)
。
<connectionStrings>
<remove name="myConn"/>
<add name="myConn" connectionString="User ID=sa;Password=XXXXX;Initial Catalog=qualitaBorri;Data Source=PC_NAME\SQLEXPRESS;Connection Timeout=60"/>
</connectionStrings>
通过代码,您可以通过这种方式建立连接:
public static SqlConnection getConnection()
{
string conn = string.Empty;
conn = System.Configuration.ConfigurationManager.ConnectionStrings["myConn"].ConnectionString;
SqlConnection aConnection = new SqlConnection(conn);
return aConnection;
}
您只能在创建实例时设置ConnectionTimeout
。创建实例时,请勿更改此值。
您可以在连接字符串中添加Connection Timeout=180;
[旧帖子,但由于要查找的内容,我认为我应该为此主题添加一些信息。我本来要添加评论,但是我没有足够的代表。
正如其他人所说:
connection.ConnectionTimeout用于初始连接
command.CommandTimeout用于单个搜索,更新等。>
但:
connection.ConnectionTimeout还用于提交和回滚事务。
是的,这是一个绝对疯狂的设计决定。因此,如果您在提交或回滚时遇到超时,则需要通过连接字符串增加此值。
command.CommandTimeout
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(ConnectionString);
builder.ConnectTimeout = 10;
using (var connection = new SqlConnection(builder.ToString()))
{
// code goes here
}
您可以将连接超时设置为连接级别和命令级别。在连接字符串中添加“连接超时= 10”。现在连接超时为10秒。
var connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;Connection Timeout=10"; using (var con = new SqlConnection(connectionString)) { }
将CommandTimeout属性的设置为SqlCommand
var connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword"; using (var con = new SqlConnection(connectionString)) { using (var cmd =new SqlCommand()) { cmd.CommandTimeout = 10; } }
command.CommandTimeout