0

これはほとんどの人にとって非常に基本的な質問であることを知っているため、前もってお詫び申し上げますが、必要な関連情報を見つけるのに本当に苦労しており、誰かが私を正しい方向に送ってくれるかどうか疑問に思っていました.

winforms アプリと SQLserver データベースがあります。データベースのデータをさまざまなコントロール (データグリッドを含む) に取り込む方法を知っています。ただし、私が苦労しているのは、データグリッド内のユーザーのデータ操作をSQLサーバーデータベースに戻す方法です。

また、たとえばテキスト ボックスからデータを取得し、TSQL を使用してそれをデータベースにポストする方法も知っていますが、データグリッドは私をほのめかしています。データバインディングと関係があることは知っていますが、あまり進歩していません。

現時点でデータグリッドにデータを入力する方法は次のとおりです。

string sqlText = "SELECT * FROM tblCaseTypes;";
string conStr = cConnectionString.BuildConnectionString();
SqlConnection linkToDB = new SqlConnection(conStr);
SqlCommand sqlCom = new SqlCommand(sqlText, linkToDB);
SqlDataAdapter myAdapter = new SqlDataAdapter(sqlCom);
myAdapter.Fill(tsh);
dataTimesheet.DataSource = tsh;

さまざまなリソースを検索しましたが、非常に役立つものは見つかりませんでした。データグリッド内のユーザー入力データを、元の場所から sqlserver データベースにポストバックする方法に関する優れた (初心者向けの) 記事の方向性を誰か教えてもらえますか?

4

3 に答える 3

2

tshvarがDataSetまたはDataTableであるという仮定から始めます。
これが当てはまる場合、同じSqlCommandを使用して新しいSqlDataAdapterを作成して更新を行うことができますが、Fillメソッドを使用する代わりに、グリッドのDataSourceから抽出されたDataTableまたはDataSetを渡すUpdateメソッドを使用します。Updateメソッドを実行する前に、DataAdapterのプロパティSelectCommandを、レコードの取得に使用したものと同じSqlCommandに設定します。

DataTable dt = dataTimesheet.DataSource as DataTable;
string sqlText = "SELECT * FROM tblCaseTypes;"; 
string conStr = cConnectionString.BuildConnectionString(); 
SqlConnection linkToDB = new SqlConnection(conStr); 
SqlDataAdapter myAdapter = new SqlDataAdapter(); 
myAdapter.SelectCommand = new SqlCommand(sqlText, linkToDB);
myAdapter.Update(dt); 

このようにして、データベースの更新に必要な適切なINSERT、DELETE、およびUPDATESqlCommandを構築するための負担をSqlDataAdapterに渡します。

ただし、内部でSqlDataAdapterは、INSERT、UPDATE、およびDELETE SQLコマンドを作成できるようにするために、SelectCommandを実行する必要があることに注意してください。結果として、これはパフォーマンスを妨げる可能性があります。最適なパフォーマンスを実現するには、INSERT、DELETE、およびUPDATEコマンドを指定して、それらをSqlDataAdapterのInsertCommand、DeleteCommand、およびUpdateCommandプロパティに明示的に割り当てます。

いくつかの参考資料:
DataGridViewからデータベース
を更新するVisual C#
.NETDbDataAdapter.UpdateメソッドでSqlDataAdapterオブジェクトを使用してSQLServerデータベースを更新する方法

于 2012-04-13T13:01:07.017 に答える
1

アダプターに挿入/更新/削除コマンドを実装する必要があります。

myAdapter.InsertCommand = new SqlCommand("INSERT INTO yourTable VALUES(@param1, @param2)", conn);
myAdapter.InsertCommand.Parameters.Add("@param1",...);

Update コマンドと Delete コマンドに対しても同じことを行うだけです。次に、アダプターを使用して DataSet を埋め、データグリッドのデータソースとして作成します。

DataSet ds = new DataSet();
myAdapter.Fill(ds);
dataGrid1.DataSource = ds;

変更をデータベースに送信する場合は、myAdapter.Update メソッドを呼び出すだけです。

myAdapter.Update(ds);

こちらの素敵な記事: DataGridView での追加、編集、および削除

于 2012-04-13T13:13:18.653 に答える
0

これは、データグリッドから更新を行う方法の非常に基本的な例です。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datagrid.updatecommand.aspx

基本的にあなたは必要です

    OnEditCommand="ItemsGrid_Edit"

その後、あなたの

    Sub ItemsGrid_Update(sender As Object, e As DataGridCommandEventArgs) 

値を取得するためにアイテムをテキストボックスにキャストする必要があるメソッド

    Dim qtyText As TextBox = CType(e.Item.Cells(3).Controls(0), TextBox)

次に、SQLUPDATEでこれらの値を使用できます

ああ、これが多くのユーザーによって使用される場合は、ストレートSQLではなくストアドプロシージャまたはLinqを使用する必要があります。

また、上記のコードはVB.netです。質問でタグを使用して、使用している言語を指定する必要があります

于 2012-04-13T13:00:16.020 に答える