2016-01-18 57 views
3
中插入新行

我使用firebird ado.net客戶端爲我們公司的每個訂單創建的「訂單清單」添加了一行新數據庫。我寫的代碼對於列表項目工作正常,但插入新代碼不會出現在別處(例如在flamerobin中)。我認爲發生的事情是交易沒有被提交,看到它在我的代碼中被識別(不能添加重複的值)。 代碼:Ado.net firebird commit在表

using (FbConnection fbCon = new FbConnection) 
{ 
    fbCon.Open(); 
    ***command w/ parameterised command string*** 
    using (FbTransaction fbTrans = fbCon.BeginTransaction()) 
    using FbCommand orderCommand = new FbCommand(cmdString, fbCon, fbTrans) 
    { 
    ***Adding parameters and values*** 
    try 
    { 
     int recordsAffected = orderCommand.ExecuteNonQuery(); 
     fbTrans.Commit(); 
    } 
    catch (FbException E) 
    { 
    fbTrans.Rollback(); 
    fbCon.Close(); 
    throw E 
    } 
} 

RecordsAffected返回1,但我不能看到flamerobin或數據庫管理程序更新的值。我錯過了什麼嗎?

+0

請確保在「其他程序」中也啓動了新的事務 - 否則它們可能會使用舊事務(在添加記錄之前啓動),這些事務看不到新記錄。 – ain

+0

感謝您的建議,但我已經嘗試過。問題是交易沒有錯誤地返回,但似乎沒有提交。我認爲它可能是ado.net客戶端或Visual Studio中的某些東西使連接保持打開狀態?有沒有其他人與這些工作? –

回答

0

如果有其他人遇到這個問題,它在Visual Studio的調試設置中。 https://visualstudiomagazine.com/blogs/tool-tracker/2012/05/dealing-with-local-databases-or-why-your-updates-dont-stick.aspx解釋得很清楚,但基本上VS在您的項目的bin/Debug中顯示數據庫的副本(表面上不會混淆您的數據),但如果實際需要從外部使用/查看數據,請將外部應用程序鏈接到調試數據庫(例如flamerobin)。如果希望更新保留,您可能還需要將項目數據庫設置設置爲Copy if Newer,因爲默認設置會在您每次運行c#應用程序時將數據庫複製到文件夾中。