2009-05-11 4 views
0

データベースにデータがあり、編集、削除、挿入するまでこのコードを使用します。しかし、私はデータベースにデータを挿入するとき、REPETITIOUSではない、そしてREPETITIOUSならそれについてのメッセージボックスを表示したい。値をREPETITIOUSとしたときにデータベースを埋めたい場合は、エラーが表示されます

コード:

private void btnok_Click(object sender, EventArgs e) 
    { 
     string id = idTextBox.Text.ToString(); 
     string name = nameTextBox.Text.ToString(); 
     string family = familyTextBox.Text.ToString(); 
     table1BindingSource.EndEdit(); 
     table1TableAdapter.Update(database1DataSet.Table1); 

    } 

    private void butins_Click(object sender, EventArgs e) 
    { 
     table1BindingSource.AddNew(); 
    } 

    private void butdelete_Click(object sender, EventArgs e) 
    { 
     table1BindingSource.RemoveCurrent(); 
     table1TableAdapter.Update(database1DataSet.Table1); 
    } 

    private void butedit_Click(object sender, EventArgs e) 
    { 
     table1BindingSource.EndEdit(); 
     table1TableAdapter.Update(database1DataSet.Table1); 
    } 

私はこのクエリを書くが、私はどのように私はそれを使用することができ、知りませんか? "Database1DataSet.xsd"にそれを書き、Tableadapterにfillby()とgatedataby()が登場しました。

クエリ:

SELECT  id, name, family 
FROM   Table1 
WHERE  (id = @id) AND (name = @name) AND (family = @family) 

答えて

0

私はマークの答えに従うことをお勧めします。あなたがつかまえる

例外が、それはこのようなものであってもよいし、エラー番号2601でSQLExceptionです:

catch(System.Data.SqlClient.SqlException lExSql) 
{ 
    if(lExSql.Number == 2601) 
     return Result.Duplicate; 
    else 
     return Result.Failure; 
} 
catch 
{ 
    return Result.Failure; 
} 

また、サイドノート:)(TextBox.Text.ToStringをコールする必要はありません、 TextプロパティはString自体であるためです。

+0

カラムにUNIQUE制約を付けると、フィールドにnemberまたは文字列または任意のタイプのデータを書くことができます –

+0

はい、このデータはデータベース内の既存のデータと重複しない限り使用できます –

+0

UNIQUEは、feildの一意の識別子型に設定されていますか? –

1

さて、あなたは、データベースに興味深いコラム(おそらく[id][name][family])をまたがるUNIQUE制約...例外を発生させることにより、(かなりよく、重複を防ぐことができます置くことができます適切にメッセージボックスをキャッチすることができます)。

もう1つの方法は、既存の値を最初にチェックすることです。ただし、シリアライズ可能な分離レベルのようなものを使用しない限り、引き続き競合状態になります。

+0

UNIQUE制約を列に置くと、フィールドにnemberや文字列などのデータを書き込むことはできますか? –

+0

私はまったくフォローしていません...あなたは明確にすることができますか? –

+0

あなたはユニークな意味を持っていますか?feildのuniqueiclentifierタイプが設定されていますか? –

関連する問題