@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

データベースの一括更新

1
投稿者投稿内容
いちご
会議室デビュー日: 2005/08/30
投稿数: 2
投稿日時: 2005-08-30 14:20
こんにちは。VB.netはじめたばかりの初心者です。
ツールボックスのデータからデータ接続するのは抵抗があり、こつこつプログラムを入力しています。
データセットからデータアダプタのアップデートを使ってサーバのデータを一括更新したいのですが、できなくてこまっています。
ご教授いただけたらとおもいます。よろしくお願いします。

SQLサーバにあるDB : DB
接続したいテーブル : Table_1
Table_1のフィールド数 : 5

sCn コネクション
sDa データアダプタ
sCmd コマンド

@sqlConnectionString でKTと接続
AOpen で オープン
BsqlClient.SqlDataAdapter でテーブルと接続
CsqlDa.Fill(dtSet,"Table_1") データとりだして
DdtTable =dtSet.Tables("Table_1") で セット

ココまでは決まりごとですよね。

txt_ID.DataBindings.Add("Text", dtSet, "T_Table1.ID")
でカードの各項目にバインドしています。(各項目はテキストオブジェクトです。)

データセットに登録まではできるんです。
その後、以下コードを記述したのですが、データセットからSqlサーバのDBにアップデートできません。

Private Sub UpdateDB()
***データセットが更新されていないときには、
***以下の処理を実行しないようココでチェックが入ります。(省略略)

If MsgBox("これまでの修正内容を登録しますか?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Dim sqlCB As SqlClient.SqlCommandBuilder

dtTable = dtSet.Tables("Table_1")
sqlDa.Update(dtSet, "Table_1")

MsgBox("データ登録しました")
End If
End Sub

エラーメッセージとしては、以下の文章が出ます。
'System.InvalidOperationException' のハンドルされていない例外が system.data.dll で発生しました。
追加情報 : 更新には、変更された行を含む DataRow コレクションが渡されたとき、有効な UpdateCommand が必要です。

SqlCommandBuilderを使うとSQLが自動生成されるということなのですが・・・
やっぱり、SQL文(Updata、Insert)を入力しないとできないのでしょうか?
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2005-08-30 14:27
諸農です。

引用:

コード:

            Dim sqlCB As SqlClient.SqlCommandBuilder


SqlCommandBuilderを使うとSQLが自動生成されるということなのですが・・・


宣言だけで作っていないと言うか、Adapterにも関連付いていないような気がしますけど。。。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
いちご
会議室デビュー日: 2005/08/30
投稿数: 2
投稿日時: 2005-08-30 14:54
わ!!
ほんとにごめんなさい。まさかこんな初歩的ミスとは・・・恥ずかしさでいっぱいです。

Private Sub UpdateDB()
***データセットが更新されていないときには、
***以下の処理を実行しないようココでチェックが入ります。(省略略)

If MsgBox("これまでの修正内容を登録しますか?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Dim sqlCB As SqlClient.SqlCommandBuilder

sqlCB = New SqlClient.SqlCommandBuilder(sqlDa) ←これが無いと意味ないですね・・
dtTable = dtSet.Tables("Table_1")
sqlDa.Update(dtSet, "Table_1")

MsgBox("データ登録しました")
End If
End Sub

早急な対応、ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)