- - PR -
ODP.NETとVS2008について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-06-06 23:11
こんにちは、5年ぶりに.net開発をすることになってすっかり初心者です。
どなたかご教示下さい。 【環境】 VS2008 Oracle 10g ODP.NET 10g C# WindowsXP(リリース時は2003Serverです) VS2008、Oracle Client、ODP.NETを開発端末にインストールしました。 VS2008でOracle接続を確認したのですが、Oracleのコントロールが使えなく、 プログラムでもエラーとなってしまいます。 VS2008には参照設定でOracleDataAccessを追加し、ツールボックスのアイテム追加で OracleCommandなどを選択したのですが、ツールボックス内で不活性となり、 コントロールを配置できません。 また、以下のようにテストコーディングしてみました。 --------------------------------------------------------------- OracleConnection con = new OracleConnection(); con.ConnectionString = "user id=***;password=***;data source=***"; con.Open(); OracleCommand oraCom = new OracleCommand(); oraCom.CommandText = "SELECT count(*) as cnt FROM t_cdmstr;"; OracleDataReader oraDr = oraCom.ExecuteReader(); //int cnt = Convert.ToInt32(oraCom.ExecuteScalar()); System.Diagnostics.Debug.WriteLine(oraDr["cnt"]); con.Close(); con.Dispose(); ----------------------------------------------------------------- するとExecuteのところで、 「オブジェクトの現在の状態に問題があるため、操作は有効ではありません。」 というエラーが発生してしまいます。 イミデイトウィンドウでコネクション情報を見てみると ?con {Oracle.DataAccess.Client.OracleConnection} base {System.ComponentModel.Component}: {Oracle.DataAccess.Client.OracleConnection} ConnectionString: "user id=***;data source=***" ConnectionTimeout: 15 DataSource: "***" ServerVersion: "10.2.0.1.0" State: Open と表示されました、ここでのConnectionStringにパスワードがないのは仕様ですかね? ServerVersionの"10.2.0.1.0"はVS2008で開発してるからでしょうか? とにかくOracleとのやり取りが出来ないと開発が始まらないので どうぞ宜しくお願い致します。 | ||||
|
投稿日時: 2008-06-07 12:56
せっかく生成したOracleConnectionインスタンスがOracleCommandインスタンスに設定されてないように見えるのですが・・・。
OracleCommandのコンストラクタかプロパティでOracleConnectionインスタンスを設定してみてください。 | ||||
|
投稿日時: 2008-06-09 11:35
otfさん、ご指摘ありがとうございます!
おっしゃるとおり、OracleCommandにコネクションの設定が漏れていました! 前回のプログラムに以下の1行を追加したところDBの値が取得できました。 --------------------------------------------------------------------- OracleCommand oraCom = new OracleCommand(); ここ→ oraCom.Connection = con; oraCom.CommandText = "SELECT count(*) cnt FROM t_cdmstr"; //OracleDataReader oraDr = oraCom.ExecuteReader(); int cnt = Convert.ToInt32(oraCom.ExecuteScalar()); System.Diagnostics.Debug.WriteLine(cnt); --------------------------------------------------------------------- 助かりました。皆様今後とも宜しくお願い致します。 しかしながらOracleのコントロールが不活性でWebFormに貼り付けれないのは いまだになぞですが。。。 失礼します。 | ||||
|
投稿日時: 2008-06-09 21:48
理由はわかりませんが、WebFormの場合出ないようですね。 私の環境はVS2005Proですが、WindowsFormの場合は出てきます。 |
1