Visual Basic .Net によりsqlサーバーを更新しようとしています。

select文で取得した値で内容を更新したいのですが、UPDATE文でどうしてもエラーに
なります。

Visual Basic .NetでSELECTの結果を破棄する前に、UPDATE文を実行することは可能
なのでしょうか?
ご教授下さい。

'データベース接続
cnn.Open()

'■SELECT
Dim cmnd As System.Data.SqlClient.SqlCommand =
cnn.CreateCommand()
cmnd.CommandText = "select * from information_customer where ic_output_stat = 0 "

'データアダプターにコマンドを設定
dataAda.SelectCommand = cmnd

' 指定した SQL コマンドを実行して SqlDataReader を構築する
Dim hReader As System.Data.SqlClient.SqlDataReader =
cmnd.ExecuteReader()

' cmnd を破棄する (正しくは オブジェクトの破棄を保証する を参照)
cmnd.Dispose()

Dim stPrompt As String = String.Empty

'■update
' hConnection から SqlCommand のインスタンスを生成する
Dim cmnd_1 As System.Data.SqlClient.SqlCommand =
cnn.CreateCommand()
cmnd_1.CommandText = "update information_customer set ic_output_stat ='" & hReader("mh_Name").ToString() & "'"

Dim hReader_2 As Integer = cmnd_1.ExecuteNonQuery()

回答の条件
  • 1人2回まで
  • 登録:2006/05/25 21:31:46
  • 終了:2006/05/28 23:21:08

回答(3件)

id:Allashe No.1

Allashe回答回数59ベストアンサー獲得回数52006/05/25 22:26:12

ポイント27pt

 information_customerテーブルのic_output_stat列のデータ型は何でしょうか。

 上のSelectでは整数型(Integer等)、下のUpdateでは文字列型で更新しているようですが・・・

id:Sugipon

回答ありがとうございます。

例題について間違いがありました、すみません。

Update文で0をベタ書きしてもエラーになってしまいます。

cmnd_1.CommandText = "update information_customer set ic_output_stat =0"

select文とupdate文の間に

hReader.Close()

を入れるとupdate文が通るようになるのですが、

実際はSELECTの内容を保持したままUPDATE文を実行したいのです。

2006/05/26 10:01:29
id:kibitaki No.2

kibitaki回答回数53ベストアンサー獲得回数42006/05/26 12:02:12

ポイント27pt

単純に、SELECT文の結果を保持(逃が)しておきたいだけであれば

DataTableにセットしておけば良いと思います。

(参考URLの質問のようなことを狙ってらっしゃるのであれば回答になると思いますが、

「そんな簡単なことじゃないよ」という場合には無視しちゃって下さい)


http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=19520&fo...

id:vector_xenon No.3

vector回答回数113ベストアンサー獲得回数42006/05/26 12:23:23

ポイント26pt

connection1つにreader1つという概念ですから、コネクションを2つ用意すれば大丈夫です。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません