2016-12-09 37 views
1
using (Connection = new SqlConnection(connectionstring))     
{ 
    SqlCommand voegtoe = new SqlCommand("INSERT INTO Speler(Naam, Rugnummer, Leeftijd) VALUES(@Naam, @Rugnummer, @Leeftijd)"); 

    voegtoe.CommandType = CommandType.Text; 
    voegtoe.Connection = Connection; 
    voegtoe.Parameters.AddWithValue("@Naam", textBox1.Text); 
    voegtoe.Parameters.AddWithValue("@Rugnummer", textBox2.Text); 
    voegtoe.Parameters.AddWithValue("@Leeftijd", textBox3.Text); 

    Connection.Open(); 
    voegtoe.ExecuteNonQuery();    
} 

データベースを開くと何も追加されません。私はそれがテキストボックスにユーザーが置くテキストを追加すべきだと思う。SQL Serverデータベースに挿入できません

接続文字列は次のとおりです。あなたのクエリを実行することができなかった場合に発生

Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirector‌​y|\Speler.mdf;Integr‌​ated Security=True 
+2

ここに記載されているような状況であることを確認してください。http://stackoverflow.com/questions/17147249/why-saving-changes-to-a-database-/17147460#17147460 – Steve

+0

try-catchで囲み、catchにブレークポイントを設定してください –

+0

正しいデータベースをターゲットにしていますか?あなたの接続文字列は何ですか?おそらくファイルベースのデータベースに格納しようとしていますか? –

答えて

0

何?例外が発生した場合は、挿入を再試行する必要があります。

ExecuteNonQuery()メソッドは、挿入された行の量を返すことができます。

+2

*間違った*データベースがチェックされている場合、100回の再試行は役に立ちません。ユーザーインスタンスデータベースの場合です。これはコメントでなければなりません –

+0

これをタイプする間に私は他のコメントを見ませんでした。そして、はい、そうです。これもコメントでなければなりません:) –

2

コードに問題はありません。私はそれがAttachDBFilenameUser Instance=trueキーワードはつまり、あなたの接続文字列は、ユーザー・インスタンス・データベースを使用している疑いがある:

Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\db.mdf; User Instance=true;... 

データベースファイルに接続しようとすると、各ユーザーが自分自身のコピーを取得することを意味します。 SSMSでデータをチェックしようとすると、異なるデータベースのコピーが表示されます。

混乱の原因とは別に、この機能は廃止され、今後削除される予定です。

ちょうどあなたのデータベースサーバに適切なデータベースを作成し、その名前を指定することで、それに接続:

​​

あなたはSSMSでNew Databaseメニューから、または

CREATE DATABASE MyDBコマンドのいずれかでデータベースを作成することができます

詳細はBad habits : Using AttachDBFileNameでAaron Bertrandによって

関連する問題