• 締切済み

オラクルデータベースへの更新方法

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

みんなの回答

  • aji70
  • ベストアンサー率100% (1/1)
回答No.5

>>sSQL は何を入れればよいのでしょうか? DIM Ssql AS STRING ="INSERT INTO 社員マスター(社員番号,社員名) VALUES(777,'太郎') " 更新したい 、sql分を入れればいいです >>ORA_TRN で 変数 'ORA_TRN' は、それを囲むブロック内の変数を非表示にします。 とエラーになり、 意味がわかりません?? 環境はVisual Basic 2008 なら Usingが使えるはずですが・・・・ >又、データセットに更新する方法が分かりません。 何がしたいのかがわかりません データセットの内容を更新したいのか? sqlの結果を取得したいのか? どんなことをやりたいのかを明確にしてもらえれば いろいろと答えられると思うのですが・

すると、全ての回答が全文表示されます。
  • aji70
  • ベストアンサー率100% (1/1)
回答No.4

はじめの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 でどうでしょう?

hikeda7777
質問者

補足

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

すると、全ての回答が全文表示されます。
  • aji70
  • ベストアンサー率100% (1/1)
回答No.3

こんな感じですかね? 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

hikeda7777
質問者

補足

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

すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1416)
回答No.2

MSDNのドキュメントを参考にしたらいかがでしょう。 http://msdn.microsoft.com/ja-jp/library/system.data.dataset.aspx http://msdn.microsoft.com/ja-jp/library/ss7fbaez.aspx ここにある関連ページも参考になります。

hikeda7777
質問者

補足

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

すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1416)
回答No.1

cmd.ExecuteOracleNonQuery を使ってINSERT文かUPDATE文を実行すれば 良いのでは? INSERT INTO 社員マスター(社員番号,社員名) VALUES(777,'太郎') UPDATE 社員マスター SET 社員名='太郎' WHERE 社員番号=777

hikeda7777
質問者

補足

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

すると、全ての回答が全文表示されます。

関連するQ&A