Hay*_*k3r 72 .net c# sql-server sqlconnection
我试图覆盖SqlConnection15秒的默认超时,并得到一个错误说
无法分配属性或索引器,因为它是只读的.
有没有解决的办法?
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();
}
}
Run Code Online (Sandbox Code Playgroud)
Ani*_*hew 140
如果要为特定查询提供超时,则CommandTimeout是前进的方法.
它的用法是:
command.CommandTimeout = 60; //The time in seconds to wait for the command to execute. The default is 30 seconds.
Run Code Online (Sandbox Code Playgroud)
Kei*_*thS 37
您可以在连接字符串中设置超时值,但在连接后它是只读的.您可以在http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectiontimeout.aspx上阅读更多内容.
正如Anil所暗示的,ConnectionTimeout可能不是您所需要的; 它控制ADO驱动程序在建立新连接时等待的时间.您的使用似乎表明需要等待超过正常时间才能执行特定的SQL查询,在这种情况下,Anil完全正确; 使用CommandTimeout(R/W)来更改单个SqlCommand的预期完成时间.
Jus*_*ner 16
您始终可以将其添加到连接字符串:
connect timeout=180;
Run Code Online (Sandbox Code Playgroud)
dan*_*004 15
更简洁的方法是在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>
Run Code Online (Sandbox Code Playgroud)
通过代码,您可以通过这种方式获得连接:
public static SqlConnection getConnection()
{
string conn = string.Empty;
conn = System.Configuration.ConfigurationManager.ConnectionStrings["myConn"].ConnectionString;
SqlConnection aConnection = new SqlConnection(conn);
return aConnection;
}
Run Code Online (Sandbox Code Playgroud)
您只能设置ConnectionTimeout创建实例.创建实例时,不要更改此值.
小智 9
您还可以使用 SqlConnectionStringBuilder
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(ConnectionString);
builder.ConnectTimeout = 10;
using (var connection = new SqlConnection(builder.ToString()))
{
// code goes here
}
Run Code Online (Sandbox Code Playgroud)
您可以添加Connection Timeout=180;到您的连接字符串
老帖子,但是当我想要搜索的内容时,我想我会在这个主题中添加一些信息.我打算添加评论,但我没有足够的代表.
正如其他人所说:
connection.ConnectionTimeout用于初始连接
command.CommandTimeout用于个人搜索,更新等.
但:
connection.ConnectionTimeout 还用于提交和回滚事务.
是的,这是一个绝对疯狂的设计决定.
因此,如果在提交或回滚时遇到超时,则需要通过连接字符串增加此值.
您可以将连接超时设置为连接级别和命令级别。
将“Connection Timeout=10”添加到连接字符串中。现在连接超时是 10 秒。
var connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;Connection Timeout=10";
using (var con = new SqlConnection(connectionString))
{
}
Run Code Online (Sandbox Code Playgroud)
将 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;
}
}Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
133934 次 |
| 最近记录: |