dポイントプレゼントキャンペーン実施中!

Visual Basic 2008 を使用しています。(初心者です)
ODP.NETにてデータセットし、
オラクルのテーブルを読み込む事は可能なのですが、
データセットに更新して、
オラクルのテーブルレコードを更新する方法がわかりません。
【】内にソースを記載して頂ければ幸いです。
ご伝授願いたく宜しくお願い致します。

例)
オラクルテーブル名= 社員マスター
フィールド= 社員番号、社員名

Imports Oracle.DataAccess.Client
Imports Oracle.DataAccess.Types

Dim cnn As New OracleConnection
Dim cmd As New OracleCommand
Dim dsList As New DataSet
Dim adp As New OracleDataAdapter(cmd)

cnn.ConnectionString = "user id=ITS;password=ITS;data source=ITS"
cmd.Connection = cnn

'社員番号 777 がオラクルテーブルにあるか
cmd.CommandText = "Select * from 社員マスター WHERE 社員番号 = 777 "
adp.Fill(dsList, "EMPMSTR")

'DataSetの件数が0なら
If dsList.Tables("EMPMSTR").Rows.Count = 0 Then

【ここに記載すると思いますが、
社員番号=777 社員名=太郎 をデータセットとオラクルテーブルに追加するソースをお願い致します。】

else'社員番号 777 がある場合。

【ここに記載すると思いますが、
社員番号=777 の 社員名を 太郎 に変更し、データセットとオラクルテーブルを更新するソースをお願い致します。】

end if

A 回答 (5件)

>>sSQL は何を入れればよいのでしょうか?


DIM Ssql AS STRING ="INSERT INTO 社員マスター(社員番号,社員名) VALUES(777,'太郎')
"
更新したい 、sql分を入れればいいです

>>ORA_TRN で 変数 'ORA_TRN' は、それを囲むブロック内の変数を非表示にします。 とエラーになり、
意味がわかりません??
環境はVisual Basic 2008 なら
Usingが使えるはずですが・・・・

>又、データセットに更新する方法が分かりません。
何がしたいのかがわかりません
データセットの内容を更新したいのか?
sqlの結果を取得したいのか?

どんなことをやりたいのかを明確にしてもらえれば
いろいろと答えられると思うのですが・
    • good
    • 0

はじめのSELECTで open はしてるのかと思いました。



Using ORA_CN As New OracleConnection
''ORACLE接続文字列 set
ORA_CN.ConnectionString = "user id=ITS;password=ITS;data source=ITS"


'/* 接続開始
ORA_CN.Open()
If ORA_CN.State = ConnectionState.Open Then

'/* トランザクション開始
Dim ORA_TRN As OracleTransaction = ORA_CN.BeginTransaction

Using ORA_CMD As New OracleCommand

ORA_CMD.Connection = ORA_CN
ORA_CMD.CommandText = sSQL

Try
lret = ORA_CMD.ExecuteNonQuery()
ORA_TRN.Commit()
Catch ex As Exception
MsgBox(ex.Message)

ORA_TRN.Rollback()
lret = -1
End Try

'/* 開放
ORA_CMD.Dispose()

End Using
End If

If ORA_CN.State = ConnectionState.Open Then ORA_CN.Close()
'/* 開放
ORA_CN.Dispose()
End Using

でどうでしょう?

この回答への補足

返答有難う御座いました。
連絡が遅くなり申し訳ありません。
分からないためそっくりソースをコピペしましたが、
ORA_TRN で 変数 'ORA_TRN' は、それを囲むブロック内の変数を非表示にします。 とエラーになり、
sSQL は何を入れればよいのでしょうか?
又、データセットに更新する方法が分かりません。
ご伝授の程、宜しくお願い致します。

補足日時:2009/06/23 17:15
    • good
    • 0

こんな感じですかね?


vb2008なら Using 使ったほうがいいかと
'/* トランザクション開始
Dim ORA_TRN As OracleTransaction = cnn.BeginTransaction
dim lret as long

CMD.CommandText = "INSERT INTO 社員マスター(社員番号,社員名) VALUES(777,'太郎')
"

Try
lret = CMD.ExecuteNonQuery()
ORA_TRN.Commit()
Catch ex As Exception

ORA_TRN.Rollback()
lret = -1
End Try

この回答への補足

ご返答有難う御座いました
早速、試してみましたが、
ORA_TRN As OracleTransaction = cnn.BeginTransaction
の所で、エラーとして
【この操作用に接続がオープンしている必要があります。】
と来ました。
何が悪いのかが分からない為、ご伝授願います。

補足日時:2009/06/19 16:38
    • good
    • 0

MSDNのドキュメントを参考にしたらいかがでしょう。


http://msdn.microsoft.com/ja-jp/library/system.d …
http://msdn.microsoft.com/ja-jp/library/ss7fbaez …
ここにある関連ページも参考になります。

この回答への補足

ご返答有難う御座います。
参考URLは結構見たのですが、初心者の為、わからず、
実際にソースを書いて頂ければ、把握できるかと思い、投書しました。
できれば、ソースを書いて頂ければ幸いです。

補足日時:2009/06/19 16:06
    • good
    • 0

cmd.ExecuteOracleNonQuery を使ってINSERT文かUPDATE文を実行すれば


良いのでは?
INSERT INTO 社員マスター(社員番号,社員名) VALUES(777,'太郎')
UPDATE 社員マスター SET 社員名='太郎' WHERE 社員番号=777

この回答への補足

ご返答有難う御座いました。
ExecuteOracleNonQuery を入力すると
'Oracle.DataAccess.Client.OracleCommand' のメンバではありません。 とエラーになってしまいます。
初心者なもので、出来れば具体的に構文を教えて頂きたく、
又、データセットに更新する方法も教えて頂きたく、宜しくお願い致します。

補足日時:2009/06/19 10:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!