2017-06-01 16 views
0
Me.mycom.CommandText = "INSERT INTO Schritte_WegGruppen VALUES (" & SchrittID.ToString & ", " & WegGruppeID.ToString & ", '...')" 
Me.mycom.ExecuteNonQuery() 

不扔預期的錯誤以上兩行執行在VB .NET完全正常,但他們拋出此異常在C#:SqlCommand.ExecuteNonQuery()在VB.net

聲明已經結束。違反PRIMARY KEY限制「PK_Schritte_WegGruppen_ID_Schritte_ID_WegGruppen」。重複的密鑰不能被插入到對象「dbo.steps_pathgroups」中。雙鍵值是(1,1)。

這個異常是完全合乎邏輯的,當我在SQL Server Management Studio中執行此查詢時,也會得到相同的異常。當我運行它時,我期望VB代碼中有錯誤,但我沒有發現任何異常。我不懂爲什麼。

ExecuteNonQuery()如何在VB.Net和C#中工作有區別嗎?

這是我想要轉換成C#的完整VB代碼。

Try 
     '*** In die Modul Datenbank wechseln *** 
     Me.mycom.CommandText = "USE " & ModulDB 
     Me.mycom.ExecuteNonQuery() 

     Me.mycom.CommandText = "INSERT INTO Schritte_WegGruppen VALUES (" & SchrittID.ToString & ", " & WegGruppeID & ", '...')" 
     Me.mycom.ExecuteNonQuery() 

     Return 1 
    Catch ex As Exception 
     Me.ErrMess = ex.Message 
     Return -1 

而且轉換的C#代碼是在這裏:

try 
{ 
    //*** In die Modul Datenbank wechseln *** 
    this.mycom.CommandText = "USE " + ModulDB; 
    this.mycom.ExecuteNonQuery(); 

    this.mycom.CommandText = "INSERT INTO Schritte_WegGruppen VALUES (" + SchrittID.ToString() + ", " + WegGruppeID.ToString() + ", '...')"; 
    this.mycom.ExecuteNonQuery(); 

    return 1; 
} 
catch (Exception ex) 
{ 
    this.ErrMess = ex.Message; 
    return -1; 
} 

我希望我的問題是,現在更清晰。

+1

您確定您的VB.net代碼中沒有「try/catch」結構嗎? – Pikoh

+2

與我說......「做」,「不」,「連接」,「輸入」,「進入」,「sql」......嚴重的是,該代碼是一種**巨大的SQLI風險。但是:在VB代碼中,您是否有任何可能吞噬異常的錯誤處理代碼? –

+0

您沒有向我們展示c#代碼 – jamiedanq

回答

1

ADO.NET - 或更普遍的任何庫代碼 - 幾乎總是不知道或不在乎調用代碼正在使用哪種語言。因此,對於你的描述哪三種可能的原因:

  • 數據/系統狀態是在兩個測試用例這意味着它真的不是在一種情況下示數不同,但在其他 - 因爲他們談論不同的場景
  • 它示數,但你周圍的一些異常處理代碼(通常爲:try/catchOn Error)是吞嚥異常
  • 你已經犯了一個錯誤翻譯兩個語言之間的代碼es,並且您正在執行的實際字符串是不同
+0

我正在使用完全相同的數據庫和相同的表。在SQL查詢調用之前檢查最終值,它們是相同的。事實上,當我在SQL Server管理工作室上直接運行它並傳入VB代碼時,VB代碼中的SQL查詢字符串會失敗。這對我來說很奇怪。 – user2139876

+0

@ user2139876然後再次檢查:圍繞它的錯誤處理代碼。如果你簡單地添加'Console.WriteLine(「yay,我到了這裏!」);'(或類似的)'ExecuteNonQuery()'之後 - 做它*實際上那裏*? –

+0

剛剛檢查。不,它沒有。 'ExecuteNonQuery()'拋出異常' – user2139876