2016-03-23 38 views
1

私は、データベースからのデータでDataGridViewのを作ってきた、そして私はデータベースにデータを保存するにはどうすればよいですか?

問題があるなど、データを削除、挿入データと3つの異なる形を持っている私は、プログラムをデータを挿入して再起動しようとしている、データ救われません。ここで

は私のコードです:COMMITを追加

SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"); 

con.Open(); 

string sql = "INSERT INTO Elevi (Nume, Prenume, SportulPracticat) VALUES(@nume, @prenume, @sport)"; 

using (SqlCommand cmd = new SqlCommand(sql, con)) 
{ 
    cmd.Parameters.AddWithValue("@nume", textBox1.Text); 
    cmd.Parameters.AddWithValue("@prenume", textBox2.Text); 
    cmd.Parameters.AddWithValue("@sport", textBox3.Text); 

    cmd.ExecuteNonQuery(); 
} 

con.Close(); 
+1

デバッグモードでこれを実行して、何が起こっているのかを確認しましたか? 'cmd.ExecuteNonQuery()'が実行されるとすぐに書かれたように、行をテーブルに挿入する必要があります。 – SlimsGhost

+0

これはおそらくこれです。http://stackoverflow.com/questions/17147249/why-saving-changes-to-a-database-fails/17147460#17147460 – Steve

+1

はい.iこれをデバッグモードで実行します。そして、私は行を挿入している。しかし、それは保存されません。私はXボタンを押して、デュブをもう一度実行すると、行が消えた。 –

答えて

1

全体ユーザーインスタンスとAttachDbFileName =アプローチには欠陥があります - せいぜい! Visual Studioでアプリケーションを実行すると、App_Dataディレクトリから出力ディレクトリ(通常はアプリを実行する.\bin\debug - )にコピーされます。INSERTは正常ですが、ただの間違った.mdfファイルを最後に見てください!

myConnection.Close()コールにブレークポイントを設定してから、.mdfファイルをSQL Server Mgmt Studio Expressで検査してみてください。データはほとんど確実です。私の意見では

真の解決策は、SQL Server Expressをインストールし

  1. になり

  2. SQL Server Management StudioのExpressをインストール

  3. (そして、あなたはすでにやったとにかくその)
  4. データベースをSSMS Expressに作成し、論理名を付けてください(例:YourDatabase

  5. 論理名データベース名(サーバー上に作成するときに指定)を使用して接続します。物理データベースファイルとユーザーインスタンスを混乱させないでください。その場合は、接続文字列のようなものになります:

    Data Source=.\\SQLEXPRESS;Database=YourDatabase;Integrated Security=True 
    

    と他のすべてが前とまったく同じです...

はまた、より多くのためにアーロン・ベルトランの優れたブログ記事Bad habits to kick: using AttachDbFileNameを見ます背景情報

-1

てみてください。 SQLコードへのコマンド

SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"); 
SqlTransaction trans = con.BeginTransaction(); 
con.Open(); 
string sql = "INSERT INTO Elevi (Nume , Prenume , SportulPracticat) VALUES(@nume,@prenume,@sport)"; 
using (SqlCommand cmd = new SqlCommand(sql, con)) 
{ 
    cmd.Transaction = trans; 
    cmd.Parameters.AddWithValue("@nume", textBox1.Text); 
    cmd.Parameters.AddWithValue("@prenume", textBox2.Text); 
    cmd.Parameters.AddWithValue("@sport", textBox3.Text); 
    cmd.ExecuteNonQuery(); 
    trans.Commit(); 
} 
con.Close(); 
+0

あなたはそのデモコードを提供してください – Moumit

0

エラーを検出できません。たぶん間違ったコードを探しているかもしれません。 デバッグを開始するときにidataがdbから消滅する場合は、おそらく、前または後に何が起こるかを調べる必要があります(削除または切り捨てを実行しますか?)。

関連する問題