2012-03-25 36 views
0

我已經讀取了線程的負載,並嘗試了大量的東西,但無法檢索我插入的行的標識(它是SQL上的自動生成主鍵Server 2008)檢索插入行的標識(cshtml)

請問下列代碼有什麼問題?

public static int AddAddress(dynamic Address) 
{ 
     var sql = "INSERT INTO Address (AddressLine1, AddressLine2, AddressLine3,  
     TownCity, CountyID, Postcode, CountryID) VALUES (@0, @1,> @2, @3, @4, @5, @6)"; 

     DB.Execute(sql, Address.AddressLine1, Address.AddressLine2, 
     Address.AddressLine3, Address.TownCity, Address.CountyID, Address.Postcode, 
     Address.CountryID); 

     return = (int)DB.GetLastInsertId(); 
} 
+0

「沒有工作」是什麼意思? – usr 2012-03-25 21:48:31

+0

對不起.....我將從我的問題中編輯出第二點,因爲我可以看到它的問題,因爲它來自舊版本並且已經被評論過年齡。 – Pinwheeler 2012-03-25 22:08:30

+0

「請問下面的代碼有什麼問題?」是的,它有什麼問題?你沒有說,我也沒有看到任何明顯的。 **什麼是實際問題?**什麼是「DB」? – usr 2012-03-25 22:14:31

回答

0
return = (int)DB.GetLastInsertId(); 

是的,它沒有工作。更好的是它沒有編譯。

return (int)DB.GetLastInsertId(); 

而在這之後,請注意@ 2中的SQL文本
這是什麼意思之前>

+0

謝謝你。 (我會盡量在下一次更清楚)。我已經刪除了「=」和隨機的「>」。我現在得到以下錯誤「Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:無法將類型'System.DBNull'轉換爲'int'」(但我可以在SQL服務器中看到該行已成功添加,因此確實存在,而不是NULL錯誤會提示)。 thx – Pinwheeler 2012-03-26 19:29:28

+0

不要低估該錯誤消息。那裏有什麼不對。其中一個字段爲空,並且此消息本身不會消失。在DB.Execute行上放置一個斷點並檢查傳遞給INSERT語句的值 – Steve 2012-03-26 19:40:02

+0

嗨。我仍然堅持這一點,非常沮喪。我已經從Webmatrix轉移到Visual Studio Express以進行更好的調試。我可以認爲我的動態地址對象在傳遞給execute命令的所有變量中都有正確的值。我也可以在SQL Server Managment Stodio中看到,所有這些都保存在表格中......沒有NULLS在任何地方。只是GetLastInsertId不工作.....我可以在我的網站本身或SQL服務器丟失任何東西,這意味着這個功能對我無效嗎? THX – Pinwheeler 2012-03-31 12:29:47