【发布时间】:2014-02-10 21:00:24
【问题描述】:
执行代码时出错,我使用的是 C# & SQL Server 7 / 2000。
我正在做的步骤是:
- 获得所有门票
- 然后我阅读每张票
- 传递给 Web 服务方法进行验证
- 如果返回为真,我需要更新一个表。
请检查我的代码,感谢有关如何修复它的反馈.. 因为这几天让我发疯了!谢谢!
public void Execute()
{
SqlConnection conn = null;
SqlConnection conn2 = null;
SqlDataReader rdr = null;
try
{
Helper helper = new Helper();
using (conn = new SqlConnection(helper.MISDBConnectionString))
{
conn.Open();
string ticketid = null;
bool bTerm = false;
int rowsAffected = 0;
if (rdr != null) { rdr.Close(); }
SqlCommand selectCommand = new SqlCommand();
selectCommand.CommandText = "SELECT ...";
selectCommand.Connection = conn;
rdr = selectCommand.ExecuteReader();
while (rdr.Read())
{
ticketid = rdr["ticketid"].ToString();
bTerm = calling webserver for validation
if (bTerm)
{
using (conn2 = new SqlConnection(helper.MISDBConnectionString))
{
conn2.Open();
SqlCommand updateCommand = new SqlCommand();
updateCommand.CommandText = "UPDATE ticket SET code = @code WHERE ticketid = @ticketid";
updateCommand.CommandType = CommandType.Text;
updateCommand.CommandTimeout = 120;
updateCommand.Parameters.AddWithValue("@code", 8);
updateCommand.Parameters.AddWithValue("@ticketid", ticketid);
updateCommand.Connection = conn2;
rowsAffected = updateCommand.ExecuteNonQuery(); //fails here
}
}
}
}
}
catch (Exception ex)
{
logger.Error(ex.ToString());
}
finally
{
if (conn != null) { conn.Close(); }
if (conn2 != null) { conn2.Close(); }
if (rdr != null) { rdr.Close(); }
}
}
我需要使用两个连接,因为如果我使用一个需要在更新之前关闭 dataReader 的连接,它会给我一个错误
我目前遇到的错误:
System.Data.SqlClient.SqlException (0x80131904):超时。这 在操作完成之前经过的超时时间或 服务器没有响应。在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常, 布尔中断连接)在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,布尔型 breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler、SqlDataReader 数据流、 BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior,字符串 resetOptionsString) 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior、RunBehavior runBehavior、布尔 returnStream、布尔 异步)在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior、RunBehavior、runBehavior、布尔返回流、字符串 方法,DbAsyncResult 结果)在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult 结果,字符串方法名称,布尔值 sendToPipe) 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 在 GDR.UpdateTicket.Execute()
【问题讨论】:
标签: c# sql-server-2000 sqldatareader sqlcommand sql-server-7