2015-04-23 36 views
2

我嘗試允許用戶添加一個類別(到數據庫)。但是,我不希望那裏有重複的類別。檢查數據庫的重複數據(C#)

這是我到目前爲止有:

using (var sqlcmd = new SqlCommand("INSERT INTO category_table AS e (Category) VALUES(@cat) WHERE e.Category != @cat;", sqlconnection)) 
{ 
    //code here to add category to DB 
} 

但是,我得到的錯誤:

"SqlException Unhandled: Incorrect syntax near the keyword 'AS'."

+0

查找SQL約束條件 –

+0

它是sql server所抱怨的''作爲''。但我同意@walther,只是把它作爲一個獨特的專欄。 – paqogomez

+0

@paqogomez不能。因爲Category是一個'varchar'列。 – John

回答

2

只要選中列Unique。不要在C#中使用DB的工作。

+0

而子類別呢?我有不同類別之間的共同子類別。 – John

+2

@John你沒有問你的問題中的子類別。不要擴大你的問題的範圍。 – mason

+0

@mason你沒有問過Categories是一個'int'還是'varchar'。如果它的'varchar'不能成爲'unique'。 – John

0

首先你的插入語法是錯誤的。它應該是

INSERT INTO category_table (Category) values(@cat) 

還刪除where條件。插入的語法是錯誤的。

所以它會像

using (var sqlcmd = new SqlCommand("INSERT INTO category_table (Category) values(@cat)", sqlconnection)) 
{ 
    //code here to add category to DB 
} 

其次,你需要做列,而您不想重複unique

+0

你不能創建'varchar'列'UNIQUE'。 – John

+3

@John: - 你一定可以做到,命令是'ALTER TABLE category_table WITH CHECK ADD CONSTRAINT UQ_category_table_category UNIQUE(Category)' –

+0

這是否定的。我使用的是SQL Management Studio,它不允許我創建「UNIQUE」列。 – John

0

問題在於你的sql。

INSERT INTO category_table AS e (Category) VALUES(@cat) WHERE e.Category != @cat;

插入沒有一個WHERE子句。此外,您不能將您要插入的表格別名。

如果您只想有條件地插入數據庫,則需要使用SELECT來查看是否存在相同類型的現有類別,並且只有在不存在時才插入,或者將列設置爲唯一通過約束。