2011年7月15日金曜日

→→→データセットのレコード更新をデータベースに反映させる

データセットに取得したレコードの更新をデータベースに反映させるには
SqlCommandBuilder( OleDbCommandBuilder )オブジェクトを生成してから
SqlDataAdapter( OleDbDataAdapter ) オブジェクトのUpdateメソッドを実行
SqlCommandBuilderオブジェクトの生成はNewキーワードを使い
引数にSqlDataAdapterオブジェクトを指定
New SqlClient.SqlCommandBuilder( SqlDataAdapterオブジェクト)

SqlCommandBuilderオブジェクトはデータセットの変更に対応するSQL文を自動的に作成します
データセットのレコードの更新はDataRowオブジェクトにフィールドのインデックスまたは名前を指定し
新たな値を代入します----> Rowsプロパティにレコードとフィールドを指定
DataTableオブジェクト.Rows(レコードのインデックス)(フィールドのインデックス名前) = 値
更新後SqlDataAdapterオブジェクトのUpdateメソッドを実行するとデータセットの変更が
データベースに反映されます
SqlDataAdapterオブジェクト.Update( DataSetオブジェクト , テーブル名 )

Dim sCom As SqlClient.SqlCommandBuilder
Dim dSet As DataSet = New DataSet("事務")
Dim dAdp As SqlClient.SqlDataAdapter
Dim scn As SqlClient.SqlConnection = ~


dAdp = New SqlClient.SqlCommandBuilder(dAdp)
dAdp.Fill( dSet, "t_社員" )


sCom = New SqlClient.SqlCommandBuilder( dAdp )
dSet.Tables("t_社員").Rows(0)("氏名") = "中野剛"
dAdp.Update( dSet, "t_社員" )


テーブル―社員 --->テーブル社員
1001 山本卓也  --->1001 中野剛


データセットのレコード追加をデータベースに反映
Dim sCom As SqlClient.SqlCommandBuilder
Dim dRow As DataRow
Dim dSet As DataSet = New DataSet("事務")
Dim dAdp As SqlClient.SqlDataAdapter
Dim scn As SqlClient.SqlConnection = ~
'データセットに取得する
dAdp = New SqlClient.SqlDataAdapter("SELECT * FROM 社員", scn )
dAdp.Fill( dSet , "t_社員")
'データセットのテーブルにレコードを追加
sCom = New SqlClient.SqlCommandBuilder(dAdp)
dRow = dSet.Tables("t_社員").NewRow()
dRow(0) = 100999
dRow(1) = "江川ゆう"
dSet.Tables("t_社員").Rows.Add(dRow)
dAdp.Update( dSet , "t_社員")





0 件のコメント:

コメントを投稿