2012-03-29 8 views
2

C#.NETの新機能です。私は2日以来試みてきましたが、私は成功できませんでした。
私はWindowsアプリケーションを作成しました。 私は2つのユニークな列を持つテーブルを持っています電子メール、電話。
レコードの挿入時に一意キー制約例外をスローする列名を探したいと思います。私は、
var ex = new SqlException();
ex.Data["Mesg"] = "Exception in Email";
throw ex;

を試みたが、それは
ことが可能です「何のコンストラクタが定義されていないSystem.Data.SqlClient.SqlException」の」エラーにつながりますか? 私を助けてください。テーブルに複数の一意のキー列がある場合、どの列が一意キー制約例外をスローするかを見つける方法はありますか?

+0

私の助言は、着信モデルを検証することであり、エラーを返すデータベースに依存しません。その後、接続する前に正面を知っているので、DBと話す時間を無駄にする必要はありません。これで単純な 'ArgumentException'を先に投げることができるようになり、ちょうど検証が行われたので、問題の内容を正確に知ることができます。 – asawyer

+0

挿入/更新しようとしているデータが*複数の制約に違反する可能性があることに注意してください。それらのうちの1つ(不確定なもの)に関する違反情報のみを取得します。 –

+0

ありがとう@ asawyer、@ Damien_The_Unbeliever。 –

答えて

2

あなたはこの情報を得たいと思っています。したがって、次の構文を使用してください:

try 
{ 
    ... (access the database here) ... 
} 
catch (SqlException e) 
{ 
    ... (look at e.Message) 
} 
関連する問題