2012-08-07 123 views
0

我正試圖向數據庫中添加一條新記錄。Oracle SQL插入/ Visual Studio 2010 C#錯誤

代碼最初是

rsGroup.Open(ftSQL, Global.gADOConnection, false); 
rsGroup.AddNew(); 

rsGroup["PANELIST_NUM"] = flPanelistNum; 
rsGroup["USER_CREATED"] = Global.glUserNumberID; 

隨着對rsGroup.AddNew發生的初始誤差()是 - 柱PANELIST_NUM不允許空值。
這是因爲它是主鍵。

爲了解決這個問題我試圖用插入方法 -

strInsert1 = "INSERT INTO PANELIST_HEADER (PANELIST_NUM, USER_CREATED) VALUES (" + flPanelistNumber + "," + Global.glUserNumberID + ")"; 

System.Data.OracleClient.OracleCommand cmdCommand = new 
System.Data.OracleClient.OracleCommand(); 

cmdCommand.CommandText = strInsert1; 
cmdCommand.Connection = Global.gADOConnection; 
cmdCommand.ExecuteNonQuery(); 

當我運行此我沒有得到一個錯誤,但它在一個無限循環的推移,從不它對的下一行代碼在ExecuteNonQuery命令之後。有沒有理由爲什麼它卡在一個循環和/或有另一種方式,我成功地將這個記錄添加到數據庫?

+0

你最好使用ORM,比如實體框架還是NHibernate? – 2012-08-07 20:09:47

+0

你確定你的連接是打開的嗎?這聽起來就是這個問題。你也試過在代碼中放置try/catch來查看是否有錯誤發生? – Justin 2012-08-07 20:20:37

+0

什麼循環?也許表被鎖定。您能否嘗試重新啓動服務器以確保清除所有鎖定? – usr 2012-08-07 20:20:52

回答

1

如果ExecuteNonQuery方法掛起,它幾乎聽起來像正在對數據庫執行鎖定(或者來自先前調用的鎖定尚未釋放)。它確實不能是無限循環,因爲你的代碼(至少是你發佈的片段)不是循環的。

此外,參數化INSERT語句將是非常可取的,因爲所示的代碼將容易受到SQL注入攻擊。