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;
}
我希望我的問題是,現在更清晰。
您確定您的VB.net代碼中沒有「try/catch」結構嗎? – Pikoh
與我說......「做」,「不」,「連接」,「輸入」,「進入」,「sql」......嚴重的是,該代碼是一種**巨大的SQLI風險。但是:在VB代碼中,您是否有任何可能吞噬異常的錯誤處理代碼? –
您沒有向我們展示c#代碼 – jamiedanq