2017-11-27 3 views
0

ASP.NET MVC Webアプリケーションを作成してデータベースに追加していますが、自分のサイトにuserSettingsを追加するときに重複を削除しようとしています。データベースに追加しても重複キーを持たない

C#のコントローラで私のSQLコードは:

db.Database.ExecuteSqlCommand(@"INSERT INTO [dbo].[Settings] ([SiteID], 
[SiteName]) VALUES (" + settings.SiteID + ",'" + settings.SiteName + "' WHERE 
NOT EXISTS (SELECT SiteID FROM [dbo].[Settings] WHERE ([SiteID]) = " + 
settings.SiteID + ")"); 

私はこのエラーを取得しています:

System.Data.SqlClient.SqlException occurred
HResult=0x80131904
Message=Incorrect syntax near the keyword 'WHERE'.
Source=.Net SqlClient Data Provider
StackTrace:
Cannot evaluate the exception stack trace

おかげ

+0

入れ子の選択されたステートメントでエラーが発生していると思います....まあ... SiteIdのタイプによって異なります。数値の場合は、2番目のwhere句がその周りに一重引用符を追加しています。これが問題です。 typeがstringの場合、最初のwhere文には一重引用符がありません。 – Sparrow

+0

あなたはそれがintなので正しいので、二重引用符を2番目のwhere文から削除しましたが、同じエラーです。変更を反映するために上記の質問を更新しました。しかし、その改善のおかげで –

+0

ああ、あなたは最初のwhere節の前に ')'がありません。また、2番目のwhere句では、内部にSiteIdを入れる必要はありません – Sparrow

答えて

0

このSOリンク insert into values with where clause

を見てください重複したレコードを避けるための解決策がありますが、それらをデータベースに挿入する。

+0

Worked Perfectly。参照するために、結果はでした:db.Database.ExecuteSqlCommand(@ "存在しない(SELECT 1 FROM [dbo]。[設定] WHERE SiteID =" + settings.SiteID + ")INSERT INTO [dbo]。[設定] SiteID]、[SiteName])VALUES( "+ settings.SiteID +"、 '"+ settings.SiteName +"') "); –

関連する問題