2016-05-09 6 views
0

私のC#プロジェクトでデータベースにレコードを追加しようとしています。データベースにレコードを1回だけ追加することはできますか?

レコードを1回だけ追加できます。次回新しいレコードを追加しようとしているときに例外があります。

どうしてですか?私はコードを変更しませんでした。コードは次のとおりです。

try 
{ 
    connect.Open(); 
    cmd.Connection = connect; 

    using (cmd = connect.CreateCommand()) 
    { 
     cmd.CommandText = @"INSERT INTO [kalorivediyet].[dbo].[Uyeler](kullaniciadi,sifre,mailadresi,cinsiyet,boy,kilo,yaş,kalori) VALUES('" + txtkullanıcıadı.Text.Trim() + "','" + txtsifre.Text.Trim() + "','" + txtmail.Text.Trim() + "','" + selectedcmbox.ToString() + "'," + int.Parse(txtboy.Text) + "," + float.Parse(txtkilo.Text) + "," + int.Parse(txtyas.Text) + "," + kalorii + ")"; 
     cmd.ExecuteNonQuery(); 
    } 
} 
catch(Exception) 
{ 
    MessageBox.Show("Baglanti Kurulamadı Lütfen Tekrar Deneyin"); 
    connect.Close(); 
} 
finally 
{ 
    connect.Close(); 
} 
+3

例外はありますか?文字列の連結は使用しませんが、SQLパラメータは常に使用してください。また、テーブルのスキーマ、そのカラムの種類、タイプを教えてください。主キーとは何か、制約はありますか?任意の列の[一意制約](https://msdn.microsoft.com/en-GB/library/ms190024.aspx)? –

+0

あなたの例外メッセージを教えてください!同じレコードを再度追加しようとすると違反するいくつかのユニークなキー制約が定義されている可能性があります。そしてbtw:あなたのコードは[SQL Injection](http://www.bobby-tables.com/)に広く公開されています。これが実験のためのものであればOKですが、練習用であっても常にパラメータ化されたクエリを使用する必要があります。 –

+0

私はそれがkullaniciadi(ユーザー名)のプライマリキーを持っていると私は再び同じユーザー名を入れていない私は別のユニークなキーを持っていない私はこのコードをしようとしているとしようとcmd.ExecuteNonQueryしようとすると –

答えて

0

データベーススキームのいくつかの制約に違反していないかどうかチェックしましたか?私は、ユニークな値、primary_keysなどを意味...私はこれが理由だと思います。

+0

ようこそStackOverflow!これは答えよりむしろコメントです。 OPがどんな種類の例外やテーブルの構造を私たちに教えてくれない限り、我々は推測することができます。 –

+1

さて、あなたは正しいです、私はコメント、感謝としてそれを入れます。あなたは私が新しいと言ったように... – Onemikoscar

+0

しかし、私はこの評判でコメントをつけることはできません – Onemikoscar

関連する問題