問題タブ [dotconnect]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oracle - TransactionScope は wcf サービス メソッド内ではロールバックせず、直接呼び出された場合はロールバックします
誰かが私を助けてくれることを願って、私は数日間私を夢中にさせる問題に直面しています。ここにあります ;
私は EF4 を oracle データベースで使用しており、devart の dotConnect for oracle をプロバイダーとして使用しています。以下の DeleteCabinet メソッドを呼び出す wcf サービス メソッドがあります。
DBUtils.DeleteCabinetAndShelves は次のようになります。
テスト プロジェクト内から DeleteCabinet を呼び出すと、wcf 呼び出しではなく、メソッドを直接呼び出すと、問題なく動作します。例外がスローされ、トランザクションがロールバックされます。したがって、期待どおりにDBからレコードが削除されません
問題は、クライアントからサービス メソッド (DeleteCabinet を呼び出す) を呼び出すと、例外がスローされますが、レコードは db から削除されます。トランザクションはロールバックしません!
wcf メソッドを呼び出してもトランザクションはロールバックされないようですが、(少なくとも私には) クレイジーに思えます。
前もって感謝します
c# - Oracle が期待する日付の形式は何ですか?
次の C# コードを使用 (devArt の dotConnect for Oracle コンポーネントを使用):
...私は得ています:
Devart.Data.Oracle.OracleException は処理されませんでした メッセージ = ORA-06550: 行 2、列 13: PLS-00306: 'CONN_THRU_DOTNET' ORA-06550 への呼び出しで引数の数または型が間違っています
パラメーターは次のとおりです (ストアド プロシージャからコピー)。
問題を引き起こしているのは日付の値だと思います。ここで何が間違っていますか?
c# - Oracle パラメータはサポートされていません
次のエラー メッセージが表示されます。
System.ArgumentException は処理されませんでした Message=Value タイプ Devart.Data.Oracle.OracleParameter はサポートされていません。
...このコードで:
コメントに応じて更新されました:
では、OracleParameter の代わりに何を使用して渡すことができるのでしょうか?
これを次のように変更した場合 (私はただ慌てたニワトリのように飛び回っているだけです):
...エラー メッセージも表示されませんが、データも取得されません。
アップデートへのアップデート:
OK、ようやく機能しました。これらはエレガントではないかもしれませんが、データを取得します:
ただし、上記のように 1 つの列からではなく、すべてのデータを取得するにはどうすればよいでしょうか。最良のシナリオは、結果セットを DataGridView に送信することですが、必要な場合は、必要なさまざまな列を連結 (stringFormat()) し、プログラムでメモなどに追加することができます...
.net - Are the Oracle components for Visual Studio available for WPF?
Is the Oracle Data Provider for .NET (ODP.NET) available for WPF, or is it a WinForms-only solution?
I'm comparing the native Oracle components to devArt dotConnect, who do not have a WPF version of their components...
c# - DataGridviewが更新を拒否するのはなぜですか?
テーブルの行を更新しています。テーブルのサブセットがDataGridViewに表示されます。行を更新しても、変更はDataGridViewに反映されません。変更をコミットした後にDataGridView.Invalidate()とDataGridView.Refresh()を呼び出していますが、変更を確認するには、アプリをシャットダウンして再起動し、クエリを再実行する必要があります。
関連するコードは次のとおりです。
更新しました:
ホールの提案に基づいて(私はコメントで応答しようとしましたが、ハングしているようです):
OK、私は今これを持っています:
...それでも同じように機能します-更新しますが、アプリを再起動するまでDataGridViewはそれを認識しません。
c# - DotConnect コンポーネントで結果セットを取得しようとするとエラーになるのはなぜですか?
以下のコードでは、ExecuteReader の呼び出しで "ORA-01036: 不正な変数名/番号" が表示されます。
私がやりたいことは、リストにクエリの結果を入力することです。DevArtのドキュメント(またはグーグル)には、その例はありません。私はそれをOracleのODPコンポーネントと連携させました:
...しかし、DotConnect コンポーネントとの並行作業が見つかりません。
更新しました:
さて、メソッド全体は次のとおりです (ACurrentUserRoles は文字列のリストです)。
私が得ているエラーメッセージは、それらが発生した行にコメントとして追加されます。
c# - カーソル パラメータは、「通常の」パラメータとは異なる方法で宣言する必要がありますか?
OK、リストに保存するためにカーソル/結果セットをループしている問題を解決する方法を誰も知らないようです。だから、まず第一に:
この方法で SQL パラメータを OracleCommand オブジェクトに追加します (正常に動作します)。
IOW、パラメーターを追加するときに、SQL のパラメーター化された部分の名前 (上記の「ABCID」) とそれに値を渡します (_ABCID は、割り当てられた変数です。たとえば、「42」とします)。
ただし、カーソル (出力) パラメーターを追加するときは、値 (初期化されたカーソル オブジェクトなど) ではなく、単にデータ型が必要なようです。
(私は両方の方法を試しましたが、どちらもうまくいかなかったので...?)
本当に/したがって、私の質問は次のとおりです。これは、Cursorパラメーターをトラバーサル/アクセスのために出力することを宣言する本当に正しい方法ですか?
DevArt DotConnect コンポーネント (6.80.332)、VS 2010、.NET 4 の新しいバージョンを使用しています。
更新しました:
より詳細なコンテキストのコードは次のとおりです。
winforms - すべての Windows ユーザーが持っている信頼できるアイコン ファイル (.ico) とは何ですか?
.exe からアイコンを抽出していますが、何らかの理由でIcon.ExtractAssociatedIcon(sPathOfExe)が失敗した場合に、代替の汎用アイコンが必要です。
私が現在使用しているものよりも安全になるように頼ることができるものはありますか:
oracle - Devart dotConnect For Oracle および Enterprise Library カスタム プロバイダー マッピング
Devart の dotConnect for Oracle の試用版を使用して、単純な概念実証を試みています。これは、現在 .Net フレームワーク OracleClient を使用しているためです (非推奨のため)。 Oracle Client または Instant Client です。このため、直接モードとエンタープライズ ライブラリ 5 (データ アクセス レイヤーで使用) を操作できることを考えると、dotConnect がその仕事に適したツールであることを上司に証明しようとしています。テスト アプリの app.config にカスタム プロバイダー マップを追加するなど、Devart が提供する例に従いました。これはすべて、IDE とコンパイルされたアプリケーションの両方で私の開発マシンで動作するように見えたので、簡単なセットアップと展開プロジェクトにまとめました。
働きたくないだけです。テストは単純な select ステートメントを実行し、リストビューに結果を表示します (存在する場合 - 存在しない場合はメッセージが表示されます)。私は実際には結果自体については気にしていません。単に結果を取得するという行為です。問題は、テストを実行すると、役に立たない EL エラーが発生することです。
問題のあるコード行は次のとおりです。
app.config ファイルのプロバイダー マッピングは次のとおりです。
app.config の接続文字列は次のとおりです。
このエラーは、(とりわけ) 間違った接続文字列名を使用したことが原因で発生する可能性があることはわかっていますが、最初に構成ファイルから取得したため、これが正しいことはわかっています。また、これは開発環境で使用される構成とまったく同じです。内部例外は次のとおりです。
System.Data.OracleClient
接続文字列のプロバイダーを に変更すると、接続文字列を見つけるのにまったく問題はありませんが、サポートされていないキーワードDirect
(dotConnect Direct モード スイッチから)について不平を言うため、プロバイダー マッピングが原因であると思われます。
プロバイダーのマッピングに関して、私が何を間違ったのかわかりません。以前は使用したことがありませんが、EL 構成ツールを使用して正しいことを確認しました。カスタム ライブラリは実行可能ファイル (および他の EL ライブラリ) に含まれています。いくつかの例を見てきましたが、どれも正しい構成を持っていることを示唆しています。これは私を夢中にさせています。
c# - Oracle はどのような形式の日付値を期待していますか? また、Oracle が必要とするものをどのように与えることができますか?
「AVAILABLEDATE」は DATE 型の列です。
Toad を介してテーブルにクエリを実行し、結果を取得できます。ただし、(Winforms/C#/dotConnect) コードでは機能しません。
問題は日付を渡す方法にあると確信しています:
...しかし、日付値を強制的にOracleが認識する形式にする方法がわかりません。