私は大きなプロジェクトに取り組んでおり、それぞれの問題について詳しく説明する時間があまりありません。Windows フォーム、特に DataGridView を使用しています。データベースのテーブルにクエリを実行するデータ ソースを追加しました。enable add、delete、および edit プロパティがチェックされます。この DataGridView は、ドラッグ アンド ドロップとデータソースの追加によって作成しました。プログラムを実行すると、クエリは正常に機能し、DataGridView にテーブルが表示され、DataGridView で行を追加、編集、および削除できますが、SQL Server Management Studio を使用してテーブルをクエリすると、テーブル内のレコードが残ります。同じ。何が問題なのですか?
4 に答える
残念ながら、特に更新コマンドを実行する必要があります。
役立つリンクは次のとおりです:http: //msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.updatecommand.aspx
また、関連する場合は、SQL Serverに自動保存する方法について説明します:http: //www.codeproject.com/Articles/12846/Auto-Saving-DataGridView-Rows-to-a-SQL-Server-Data
これが、Entity Framework/MVCが好きな理由の1つです。非常に単純なデータ操作:D興味がある/時間がある場合は、チェックすることをお勧めします。
テーブルを使用した後に dbnavigator を使用している場合は、dbnavigator の保存ボタンをクリックする必要があります。これは、追加、編集、および削除は、dbnavigator の保存ボタンをクリックするまでデータベースに保存されないためです。
私は解決策を見つけました。「変更を保存」というボタンを追加しました。
まず、最初の宣言を行います。
private SqlDataAdapter da;
private DataTable dt;
private SqlCommandBuilder sqlCommandBuilder = null;
private SqlConnection Con = new SqlConnection(@"Data Source=......");
これは、データを入力する DataGridView をロードするためのコードです。
private void DataGridView_Load(object sender, EventArgs e)
{
Con.Open();
da = new SqlDataAdapter(@"SELECT * FROM tbl", Con);
sqlCommandBuilder = new SqlCommandBuilder(da);
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
Con.Close();
}
これは、[変更を保存] ボタンのコードです。
private void button1_Click(object sender, EventArgs e)
{
SqlCommandBuilder local_SqlCommandBuilder = new SqlCommandBuilder(da);
local_SqlCommandBuilder.ConflictOption = System.Data.ConflictOption.OverwriteChanges;
da.UpdateCommand = local_SqlCommandBuilder.GetUpdateCommand();
da.Update(((System.Data.DataTable)this.dataGridView1.DataSource));
((System.Data.DataTable)this.dataGridView1.DataSource).AcceptChanges();
}
グリッドビューが機能するには、データソースに挿入/更新/削除コマンドが必要であり、選択コマンドだけがあるように聞こえます。