C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[17]: Oracleへの接続


(過去ログ 17 を表示中)

[トピック内 19 記事 (1 - 19 表示)]  << 0 >>

■6702 / inTopicNo.1)  Oracleへの接続
  
□投稿者/ 初心者 (28回)-(2007/08/22(Wed) 15:09:24)

分類:[ASP.NET (C#)] 

お世話になります

.NET Framework Data Provider for Oracleを使用してOracleに接続しています


<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT DEPT.* FROM DEPT"
UpdateCommand="UPDATE DEPT SET LOC = :LOC WHERE (DEPTNO = :DEPT)">
<UpdateParameters>
<asp:Parameter Name="LOC" />
<asp:Parameter Name="DEPT" />
</UpdateParameters>
</asp:SqlDataSource>


上記のUpdateCommandを実行すると以下のエラーが出てしまいます Selectの方は上手くいっています


ORA-01036: 変数の名前/数が無効です。

説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。

例外の詳細: System.Data.OracleClient.OracleException: ORA-01036: 変数の名前/数が無効です。


どなたか、原因が分かる方が居られましたらご教示お願いします

環境
使用ツール VS2005(C#)
クライアント XPproSP2 Oracle10g MDAC2.8SP1インストール済み
データベースサーバー WinServer2003 Oracle9i
引用返信 編集キー/
■6710 / inTopicNo.2)  Re[1]: Oracleへの接続
□投稿者/ いしだ (31回)-(2007/08/22(Wed) 16:58:32)
いしだ さんの Web サイト
まったく違うかもしれませんが、

DEPTNO = :DEPT

DEPTNO = :DEPTNO

<asp:Parameter Name="DEPT" />

<asp:Parameter Name="DEPTNO" />

に変更してみるとどうでしょうか?
引用返信 編集キー/
■6712 / inTopicNo.3)  Re[2]: Oracleへの接続
□投稿者/ 初心者 (29回)-(2007/08/22(Wed) 17:11:50)
No6710 (いしだ さん) に返信
> まったく違うかもしれませんが、
>
> DEPTNO = :DEPT
> を
> DEPTNO = :DEPTNO
>
> <asp:Parameter Name="DEPT" />
> を
> <asp:Parameter Name="DEPTNO" />
>
> に変更してみるとどうでしょうか?
ありがとうございます
そこは確かにおかしかったですね
ですが、修正しても相変わらず同じエラーが出てしまいます・・
引用返信 編集キー/
■6717 / inTopicNo.4)  Re[3]: Oracleへの接続
□投稿者/ いしだ (33回)-(2007/08/22(Wed) 17:39:22)
いしだ さんの Web サイト
<asp:Parameter Name="LOC" />
<asp:Parameter Name="DEPTNO" />

を、

<asp:Parameter Name="LOC" Type="String"/>
<asp:Parameter Name="DEPTNO" Type="Int32"/>

としたらどうなりますか?

引用返信 編集キー/
■6719 / inTopicNo.5)  Re[4]: Oracleへの接続
□投稿者/ 初心者 (30回)-(2007/08/22(Wed) 17:45:49)
No6717 (いしだ さん) に返信
> <asp:Parameter Name="LOC" />
> <asp:Parameter Name="DEPTNO" />
>
> を、
>
> <asp:Parameter Name="LOC" Type="String"/>
> <asp:Parameter Name="DEPTNO" Type="Int32"/>
>
> としたらどうなりますか?
>
返信ありがとうございます
試してみましたが、全く同じエラーが出てしまいました
引用返信 編集キー/
■6722 / inTopicNo.6)  Re[5]: Oracleへの接続
□投稿者/ いしだ (34回)-(2007/08/22(Wed) 18:51:32)
いしだ さんの Web サイト
2007/08/22(Wed) 19:25:34 編集(投稿者)

すいません。ちょっとお手上げ気味ですが。。。
以下のようにやってみたらどうなりますか?

UPDATE DEPT SET LOC=(SELECT :LOC AS C_LOC FROM DUAL) WHERE (DEPTNO=:DEPTNO)

又は、

UPDATE DEPT SET LOC=(SELECT C_LOC FROM (SELECT :LOC AS C_LOC FROM DUAL)) WHERE (DEPTNO=:DEPTNO)

フォローお願いします。。。
引用返信 編集キー/
■6729 / inTopicNo.7)  Re[6]: Oracleへの接続
□投稿者/ はつね (236回)-(2007/08/22(Wed) 21:05:25)
No6722 (いしだ さん) に返信
> .NET Framework Data Provider for Oracleを使用してOracleに接続しています

とのことですので、パラメタ名は付けられません。

> UPDATE DEPT SET LOC = :LOC WHERE (DEPTNO = :DEPT)

ではなく

UPDATE DEPT SET LOC = ? WHERE (DEPTNO = ?)

とするはずです(ODP.NETじゃないと名前指定はできません)。
引用返信 編集キー/
■6730 / inTopicNo.8)  Re[7]: Oracleへの接続
□投稿者/ いしだ (36回)-(2007/08/22(Wed) 21:10:25)
いしだ さんの Web サイト
はつねさん、ありがとうございます。

あっ、ODP.NETではなかったのですね。。。

引用返信 編集キー/
■6734 / inTopicNo.9)  Re[8]: Oracleへの接続
□投稿者/ なちゃ (53回)-(2007/08/23(Thu) 01:11:32)
>とするはずです(ODP.NETじゃないと名前指定はできません)。

いやそんなことはないです…

引用返信 編集キー/
■6738 / inTopicNo.10)  Re[9]: Oracleへの接続
□投稿者/ はつね (238回)-(2007/08/23(Thu) 06:41:59)
はつね さんの Web サイト
2007/08/23(Thu) 06:51:47 編集(投稿者)

No6734 (なちゃ さん) に返信
> >とするはずです(ODP.NETじゃないと名前指定はできません)。
>
> いやそんなことはないです…

しまった。大嘘書いてしまっている?




引用返信 編集キー/
■6739 / inTopicNo.11)  Re[10]: Oracleへの接続
□投稿者/ はつね (239回)-(2007/08/23(Thu) 06:50:35)
はつね さんの Web サイト
2007/08/23(Thu) 06:53:06 編集(投稿者)

(こちらは投稿失敗)

引用返信 編集キー/
■6740 / inTopicNo.12)  Re[11]: Oracleへの接続
□投稿者/ はつね (240回)-(2007/08/23(Thu) 06:52:15)
はつね さんの Web サイト
(こちらは投稿失敗)
引用返信 編集キー/
■6750 / inTopicNo.13)  Re[12]: Oracleへの接続
□投稿者/ 初心者 (31回)-(2007/08/23(Thu) 09:54:39)
みなさん返信ありがとうございます
いしださんやはつねさんのを試してみましたが、同じエラーが出てしまいました・・・
.NET Framework Data Provider for Oracleを使用してつないでる人はいないのでしょうか?みなさんODP.NETですか?
引用返信 編集キー/
■6752 / inTopicNo.14)  Re[13]: Oracleへの接続
□投稿者/ はつね (241回)-(2007/08/23(Thu) 10:38:18)
No6750 (初心者 さん) に返信
> いしださんやはつねさんのを試してみましたが、同じエラーが出てしまいました・・・

まず訂正いたします。
.NET Framework Data Provider for Oracleを使用していてもパラメタを名前で指定する事は可能です。
普段はODP.NETしか使わないので、勘違いしておりました(やはり、少しでも怪しく思ったら検証コードかかないとだめですね)。

で、今回の件ですが、SELECT DEPT.* FROM DEPT でDETPテーブルの列をすべてもってきていますので、
UPDATEのSET句にはDEPTテーブルのすべての列を記述する必要上がり、またパラメタもすべての列分だけ必要なんじゃないでしょうか。


引用返信 編集キー/
■6761 / inTopicNo.15)  Re[14]: Oracleへの接続
□投稿者/ 初心者 (32回)-(2007/08/23(Thu) 13:12:49)
No6752 (はつね さん) に返信
> ■No6750 (初心者 さん) に返信
>>いしださんやはつねさんのを試してみましたが、同じエラーが出てしまいました・・・
>
> まず訂正いたします。
> .NET Framework Data Provider for Oracleを使用していてもパラメタを名前で指定する事は可能です。
> 普段はODP.NETしか使わないので、勘違いしておりました(やはり、少しでも怪しく思ったら検証コードかかないとだめですね)。
>
> で、今回の件ですが、SELECT DEPT.* FROM DEPT でDETPテーブルの列をすべてもってきていますので、
> UPDATEのSET句にはDEPTテーブルのすべての列を記述する必要上がり、またパラメタもすべての列分だけ必要なんじゃないでしょうか。
>
>
そのとおりにしてみたところ、更新できるようになりました
SELECT文で選択した列はすべて使用しなければいけないんですね・・・
勉強になりました ありがとうございました
解決済み
引用返信 編集キー/
■6766 / inTopicNo.16)  Re[15]: Oracleへの接続
□投稿者/ 初心者 (33回)-(2007/08/23(Thu) 14:32:45)
すいません、また1つつまずいたので、ついでに質問させてください
OracleSQLについてなのですが、列名にハイフンが入っていると、ダブルクォーテーションで囲まなければなりませんよね?
では、パラメータ名にハイフンが入っている場合どのように囲めばよいのでしょうか?
「":パスワード"」のように囲むと、パラメータと認識されず、:"パスワード"ではパラメータが空白(?)になってしまうようです
引用返信 編集キー/
■6811 / inTopicNo.17)  Re[16]: Oracleへの接続
□投稿者/ NANAC (2回)-(2007/08/24(Fri) 09:12:08)
No6766 (初心者 さん) に返信
> すいません、また1つつまずいたので、ついでに質問させてください
> OracleSQLについてなのですが、列名にハイフンが入っていると、ダブルクォーテーションで囲まなければなりませんよね?
> では、パラメータ名にハイフンが入っている場合どのように囲めばよいのでしょうか?
> 「":パスワード"」のように囲むと、パラメータと認識されず、:"パスワード"ではパラメータが空白(?)になってしまうようです

そういう時は、一度文字列を変数に代入してからパロメータ設定してみてはどうでしょうか?

引用返信 編集キー/
■6871 / inTopicNo.18)  Re[16]: Oracleへの接続
□投稿者/ はつね (244回)-(2007/08/25(Sat) 12:40:33)
No6766 (初心者 さん) に返信
> すいません、また1つつまずいたので、ついでに質問させてください

このようなときは新規に質問した方が良いです。
# 今回は、もう回答もついてますので、改めて新規質問にする事は避けた方がいいでしょう。

> OracleSQLについてなのですが、列名にハイフンが入っていると、ダブルクォーテーションで囲まなければなりませんよね?
> では、パラメータ名にハイフンが入っている場合どのように囲めばよいのでしょうか?
> 「":パスワード"」のように囲むと、パラメータと認識されず、:"パスワード"ではパラメータが空白(?)になってしまうようです

確認していませんが「パスワード」であればダブルクォートで囲まなくてもそのまま通りませんか?
「パスワ-ド」だとダブルクォートで囲まないとダメかもしれませんが。

ダブルクォートで囲むときは「:"パスワード"」になります。Parameterコレクションの方は「パスワード」です。




引用返信 編集キー/
■6912 / inTopicNo.19)  Re[17]: Oracleへの接続
□投稿者/ 初心者 (34回)-(2007/08/27(Mon) 10:01:55)
みなさん回答ありがとうございました
どうやら、勘違いしていたようで「:"パスワード"」の形で上手くいきました

>このようなときは新規に質問した方が良いです。
># 今回は、もう回答もついてますので、改めて新規質問にする事は避けた方がいいでしょう。
すいませんでした。これからは、質問する時は新しくスレッド建てるようにします
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -