2017-01-02 26 views
-1

我想在我的表中執行INSERT。這裏是我的代碼:SQL Server/C#:主鍵上的錯誤(當INSERT數據時)

SqlCommand cmd = new SqlCommand("INSERT INTO _ScoresClic (ID, Mode, Pseudo, Score) VALUES (@ID, @Mode, @Pseudo, @Score)", Conn); 

cmd.Parameters.AddWithValue("@Id", Guid.NewGuid());//edit 
cmd.Parameters.AddWithValue("@Mode",mode); 
cmd.Parameters.AddWithValue("@Pseudo", pseudo); 
cmd.Parameters.AddWithValue("@Score", score); 

cmd.ExecuteNonQuery(); 
Conn.Close(); 

連接字符串沒問題。

該數據庫位於使用在線工具創建並遠程託管的SQL Server 2012中。

這裏是我的表的配置

My table config

運行代碼時,我得到這個異常:

System.Data.SqlClient.SqlException(0x80131904):
無法將值NULL插入'ID'列'celianbastien_fr_WebSiteDB.Celianbastien._ScoresClic';列不允許有空值。 INSERT失敗。

下面是編輯我的表中的刀具:

edit options

問候。

+0

mysql或sql-server? – GurV

+0

sql-server,編輯 – HyrozenT

+0

當您使用MS SQL時,您可以將默認值設置爲'NEWID()'。否則,您可以使用@NicoRiff的提示。 –

回答

2

您的ID列是唯一的,但它似乎不是IDENTITY,它會給自動數字電源。這是唯一的,你不會重複價值觀。如果您希望它是自動數字,那麼啓用IDENTITY。 如果您不希望它是自動數字,則有兩種可能性:爲該字段指定一個默認值,或爲查詢提供一個值。

+0

默認值應該是0? – HyrozenT

+0

無論你認爲是對的。無論如何,如果這個領域是獨一無二的,你將無法重複它。我會說更好的選擇是將紅外轉換爲身份 – NicoRiff