1
我经常使用下面的模式为单线程应用程序创建SqlCommands。为Webservice准备的SqlCommand
我现在正在创建一个web服务,我担心这种模式不能同时处理来自多个客户端的请求。
有没有一种方法可以为多个客户端使用单个“准备好的”SqlCommand,而不是简单地将函数锁定为只允许单个客户端同时运行?
private static SqlCommand cmdInsertRecord;
public static void InsertRecord(String parameter1, String parameter2, SqlConnection connection, SqlTransaction transaction)
{
if (cmdInsertRecord == null)
{
//Create command
cmdInsertRecord = connection.CreateCommand();
cmdInsertRecord.CommandText = @"SQL QUERY";
//Add parameters to command
cmdInsertRecord.Parameters.Add("@Parameter1", SqlDbType.Int);
cmdInsertRecord.Parameters.Add("@Parameter2", SqlDbType.DateTime);
//Prepare the command for use
cmdInsertRecord.Prepare();
}
cmdInsertRecord.Transaction = transaction;
//Note SetParameter is an extension that handles null -> DBNull.
cmdInsertRecord.SetParameter("@Parameter1", parameter1);
cmdInsertRecord.SetParameter("@Parameter2", parameter2);
cmdInsertRecord.ExecuteNonQuery();
}
我想做这样的事情,因为这些命令被多次调用不同的值 - 这正是应该创建一个准备好的命令的情况。 – jzacharuk 2012-08-01 18:32:59
@jzacharuk - 我仍然没有看到全局sqlcommand对象中的任何好处,为什么不能在需要时在本地声明它并在完成使用时将其处置掉? – JonH 2012-08-01 18:36:47