データベースを更新するには


P  2005-05-09 21:02:58  No: 121520

はじめまして、.NETのwebアプリでデータベースを作成しております。
その際のデータベースの更新処理でご質問させていただきたいのですがよろしくお願いします。

データを入力する画面とは別に、入力したデータを更新する画面があり、その画面には、7つのテキストボックスと、4つのコマンドボタンがあります。

更新画面のテキストボックスには入力画面で入力した値がテキストボックスに常に表示されており、更新はそのテキストボックスのデータをDeleteして書き直し、更新処理をさせるためのボタンをクリックすると更新をさせるといったように設計をしております。

その際のアップデートの命令文をどのように記載すれば良いのかが分からずご教授お願いしたいのですが、
sqlcommandとsqlDaraAdapterとNew DataSetの変数を作成し、SqlCommandをSqlDataAdapterの引数として代入し、それをFillしてテーブルのデータを読み込んでいます。

そして変更したデータをテーブルに代入するために以下のようにプログラムをしています。

Dataset.Tables("テーブル名").Rows(0)("PK") = TextBox1.Text
Dataset.Tables("テーブル名").Rows(0)("列名") = TextBox2.Text



そして、DataAdapter.Updateをしているのですが、これではうまくいかず例外の画面が出てきてしまいます。

これは一体どのように解決させればよろしいのでしょうか?


medaka  2005-05-09 21:26:52  No: 121521

>例外の画面が出てきてしまいます。
どんなエラーかくらいは書いた方がいいと思う?
DBは? versionは?例外の発生場所は?コード省略されたらわからないよ?


特攻隊長まるるう  2005-05-09 22:03:06  No: 121522

とりあえず過去ログ検索『DataAdapter』で引っ掛かるような項目は
全てクリアしておいて下さい。Update を実行するには UpdateCommand
の設定が必要ですが、その際、設定されているSQL文(Update 文)を
データベースで直接実行して問題が無いか確認して下さい。
問題ない場合はそのSQL文を書き込み、medaka さんがご指摘の項目も
書き込んで下さい。


P  2005-05-10 00:58:42  No: 121523

すいません、少し分からないので教えていただきたいのですが、

>その際、設定されているSQL文(Update 文)をデータベースで直接実行して問題無いか確認して下さい。

とあるのですが、SQL文をデータベースで直接実行とはどのように行えばよろしいですか?

DBはSQLserver、vresionは2000です。

エラーメッセージは、「更新には、変更された行を含む DataRow コレクションが渡されたとき、有効な UpdateCommand が必要です。」
といったものが現れます。

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        Dim a As New SqlClient.SqlCommand("select * From テーブル名 where PK =" & Application.Contents("ID"), SqlConnection1)
        Dim SDA As New SqlClient.SqlDataAdapter(a)
        Dim ds As New DataSet

        SqlConnection1.Open()

        SDA.Fill(ds, "テーブル名")

        ds.Tables("テーブル名").Rows(0)("PK") = TextBox9.Text
        ds.Tables("テーブル名").Rows(0)("列名1") = TextBox8.Text
        ds.Tables("テーブル名").Rows(0)("列名2") = TextBox3.Text
        ds.Tables("テーブル名").Rows(0)("列名3") = TextBox4.Text
        ds.Tables("テーブル名").Rows(0)("列名4") = TextBox5.Text
        ds.Tables("テーブル名").Rows(0)("列名5") = TextBox6.Text
        ds.Tables("テーブル名").Rows(0)("列名6") = TextBox7.Text

        SDA.Update(ds, "テーブル名")

        SqlConnection1.Close()

    End Sub

このようなコードになっていて、例外の発生場所はSDA.Update(ds, "テーブル名")の所です。

ご指摘があれば、ご教授の方よろしくお願いします。


特攻隊長まるるう  2005-05-10 03:00:03  No: 121524

>>その際、設定されているSQL文(Update 文)をデータベースで直接実行して問題無いか確認して下さい。
>とあるのですが、SQL文をデータベースで直接実行とはどのように行えばよろしいですか?
Microsoft SQL Server 2000 をインストールすると『クエリ アナライザ』や『Enterprise Manager』
などが利用できると思いますが、そういったデータベースに直接SQL文を実行できるソフトでの
テストを差します。Access などで SQL Server への接続を設定してもいいです。

ただし、今回の場合、エラーメッセージから原因が分かりました。それ以前の問題でした。
[3 番目の例外 : DataAdapter の UpdateCommand が Nothing または Null](MSDNオンラインヘルプ)
http://support.microsoft.com/default.aspx?scid=kb;ja;310376#XSLTH4129121122120121120120
やはり上のボクの書き込みで指摘した通り UpdateCommand を生成していませんね。

過去ログ検索して下さいと言った筈ですが?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加