下面是代碼(與服務器/密碼等去掉)爲什麼此更新會鎖定Oracle 10中的行?
public int SetUploadedInESIDatabase(string ID)
{
using (var oOracleConn = new OracleConnection())
{
oOracleConn.ConnectionString =
@"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=<ip>)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=<dbname>)));User Id=<user>;Password=<password>;";
var cmd =
new OracleCommand(
"UPDATE FOO_ACCESS SET PIMAGE ='-1' WHERE CODE= '" + ID + "'", oOracleConn);
oOracleConn.Open();
return cmd.ExecuteNonQuery();
}
}
這段代碼的作用是它永遠不會越過return語句。沒有錯誤返回(甚至一夜之間)
我不是一個數據庫專家,但我們硬壓DBA說,連接被鎖定(或行可能...)他殺死鎖定連接,但仍然當我運行它鎖定的代碼。
我是否在要求Oracle更新行方面做錯了(tm)?
我知道我應該使用參數化查詢,但我遇到了問題,需要簡單的東西! 如果我將命令複製出cmd。與調試器和運行它使用SQL Developer然後它的工作(雖然有時它也鎖定了)
我可以從數據庫中隨意選擇。
我不確定這是正常的事情還是與我們的環境有關,所以任何幫助都很樂意接受!
哇,真的是什麼樣的Oracle連接字符串看起來像在C#中?它實際上使Oracle的Java連接字符串看起來不錯! – Powerlord 2010-07-06 15:14:22
@ R.Bemrose:如果您不使用Oracle TNSNAMES.ORA文件爲服務器提供友好名稱,那只是連接字符串的外觀。否則,使用TNSNAMES看起來好多了:'Data Source = ServerName;用戶ID =用戶;密碼= pw'。 – LBushkin 2010-07-06 15:18:54
@R。 Bemrose:Oracle支持不同的連接字符串格式http://www.connectionstrings.com/oracle#p12 – devio 2010-07-06 15:20:01