- - PR -
OracleのLONG RAW型のデータ更新について
1
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-10-12 14:18
始めましてmalと申します。
現在、VB.net + ASP.NETを使用して開発を行っています。 あるテーブルの更新を行いたいのですが テーブル内にLongRaw型のデータが存在するためうまく 更新することができません。 最初は、ODP.netのOracleDataAdapterを使用して 更新を試みましたが、更新することができず。 過去ログ を参考に作成してみましたが、 「パラメータ・バインディングが無効です。パラメータ名 : N7」のエラーが表示します。 色々試してみたのですが、 これ以上、私の力ではどうにもなりません。 ご存知の方、いらっしゃいましたら 何卒よろしくお願い致します。 ちなみに、どちらの方法もLongRaw型の データ更新対象外にするとデータの更新はうまく行きます。 −<OracleDataAdapter使用>−−−−−−−−−−−−−−−−− strCnPrm = "Data Source=AAA;" & _ "User ID=BBB;" & _ "Password=BBB" 'Oracleへ接続 cnn = New OracleConnection(strCnPrm) cnn.Open() Dim Buff As Byte Dim MyDouble As Double MyDouble = 123 Buff = CByte(MyDouble) Dim orTran As OracleTransaction = cnn.BeginTransaction myRow = dSet_gr.Tables("t_name").NewRow() ※f2〜f6にもデータ代入 myRow.Item("N1") = Buff dSet_gr.Tables("t_name").Rows.Add(myRow) cbr = New OracleCommandBuilder(dap) dap.Update(dSet_gr, "t_name") cnn.Close() −<過去ログ参考>−−−−−−−−−−−−−−−−− strCnPrm = "Data Source=AAA;" & _ "User ID=BBB;" & _ "Password=BBB" 'Oracleへ接続 cnn = New OracleConnection(strCnPrm) cnn.Open() Dim orTran As OracleTransaction = cnn.BeginTransaction Dim strSql As String = "INSERT INTO t_name(N1,N2,N3,N4,N5,N6,N7)" & _ " VALUES (:f1, :f2, :f3, :f4, :f5, :f6, :f7)" Dim cmd As OracleCommand = New OracleCommand cmd.Connection = cnn cmd.CommandText = strSql Dim f1 As OracleParameter = cmd.Parameters.Add("N1", OracleDbType.Char, ParameterDirection.InputOutput) ※f2〜f6も同様 Dim f7 As OracleParameter = cmd.Parameters.Add("JLG_LOG_DAT", OracleDbType.LongRaw) f1.Value = "00000000" ※f2〜f6にもデータ代入 Dim Buff As Byte Dim MyDouble As Double MyDouble = 123 Buff = CByte(MyDouble) f7.Value = Buff cmd.ExecuteNonQuery() orTran.Commit() cnn.Close() −−−−−−−−−−−−−−−−−−−−−−−−− ・開発環境 言語: VisualStudio.NET 2003 VB.net + ASP.NET OS: Windows2000(SP4) ・サーバー環境 OS: Windows Server 2003 Enterprise DB: Oracle 10.1.0 | ||||||||
|
投稿日時: 2005-10-13 07:52
過去ログではBYTE型配列を与えていたはずです。貴方のコードでは、BYTE型の数値になってますよね。その辺りが原因では?BYTE型配列を与えるようにしても、結果は変わらないですか? | ||||||||
|
投稿日時: 2005-10-13 09:45
おはようございます。
甕星さんお返事ありがとうございます。 BYTE型配列でも試したのですが、関係ない様です。 | ||||||||
|
投稿日時: 2005-10-13 10:09
こんにちは、じゃんぬ です。
ところで OleDb だと通ったりしません? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-10-13 10:55
「Byte配列でも関係ない」のか気になったので、以下のコードで実験してみました。 テスト用としてTestというテーブルを作成し、 列はLongRaw型のcol1という列があるのみです。 実行環境は WinXP, VisualStudio.NET 2003 Oracle9iR2 です。
実行は正常終了し、 データは「0102030405060709」が入っていました。 #編集追加 ConnectionとCommandのDispose忘れてますね、自分。 #ソースは失念した状態で残しますがご容赦くださいませ。 [ メッセージ編集済み 編集者: 夏椰【SUICA】 編集日時 2005-10-13 11:30 ] | ||||||||
|
投稿日時: 2005-10-13 11:19
私も気になったので検証していたのですが、先を越されました。(^^;)
でも、一応アップしておきます。
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-10-13 13:17
私のために時間を割いてくださった
皆様ありがとうございました。 LongRow型に別の変数を代入しておりました。 (昨日、レス時点するまではBuffを代入していたのですが・・・。) お恥ずかしい限りです。 本当にありがとうございました。 | ||||||||
1
