2010-08-25 25 views
0

我正在打开一个到数据库的连接,在该数据库中,我需要在关闭连接之前发出多个删除操作。我有以下代码,但它看起来很奇怪所有使用语句。有一个更好的方法吗?这是在连接/命令中使用using语句的正确方法吗?每个OracleConnection有多个Oracle命令

using(OracleConnection oracleConnection = new OracleConnection(connectionString)) 
{ 
    string table1Command= "DELETE FROM TABLE1..."; 
    using(OracleCommand oracleCommand = new OracleCommand(table1Command, oracleConnection)) 
    { 
     oracleCommand.ExecuteNonQuery(); 
    } 

    string table2Command= "DELETE FROM TABLE2..."; 
    using(OracleCommand oracleCommand = new OracleCommand(table2Command, oracleConnection)) 
    { 
     oracleCommand.ExecuteNonQuery(); 
    } 
} 

回答

2

写一个函数:

void InvokeCommand (OracleConnection oracleConnection, string tableCommand) 
{ 
    using(OracleCommand oracleCommand = new OracleCommand(tableCommand, oracleConnection)) 
    { 
     oracleCommand.ExecuteNonQuery(); 
    } 
} 
+0

是的。我明白你的意思了。我真正想知道的是使用using语句和连接/命令的正确方法。我可以看到这个问题在这个问题上并不明显。 – brainimus 2010-08-25 21:16:53

+0

我不熟悉这个特定的API。如果该命令是异步的,那么使用是一个坏主意。 – 2010-08-25 21:35:54

0

您正确使用using声明。 OracleConnectionOracleCommand都应该在完成之后处理完毕,并且using语句是在方法范围内完成此操作的最明确方式。

有关如何配置ConnectionPooling的一些细微之处,但我认为这超出了你的问题的范围。


*注意,OracleConnection线程安全的,这意味着,如果你试图重新使用OracleConnection情况下,那么你必须确保多个线程不会同时使用相同的实例时间。