[英]oracle ExecuteScalar in parallel programming sometimes returns null
我使用並行編程來執行兩個並行的oracle數據庫查詢。 有時,“ res”對象返回為null。 知道為什么嗎? 請注意,這是對同一表的計數查詢,沒有任何修改該表的操作,因此數據庫表和查詢都沒有改變。
string query = "select count(*) from SALES_ADVENTUREWORKS2012.SALESORDERDETAIL where PRODUCTID=709";
tasks[0] = Task.Factory.StartNew(() => db.ExecScalarQuery(query));
tasks[1] = Task.Factory.StartNew(() => db.ExecScalarQuery(query));
Task.WaitAll(tasks);
//---------------
public void ExecScalarQuery(String query)
{
OracleConnection conn = new OracleConnection(connectionString);
try
{
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = query;// "select count(*) from SALES_ADVENTUREWORKS2012.SALESORDERDETAIL where PRODUCTID=709";
cmd.CommandType = CommandType.Text;
cmd.CommandTimeout = QUERY_TIMEOUT;
Object res cmd.ExecuteScalar();
}
finally
{
conn.Close();
}
}
眾所周知,如果您在JDBC中關閉連接,則其依賴的資源也會被關閉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.