問題タブ [occi]
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.
c++ - oracle::occi::ResultSet::next() でプログラムがクラッシュする
Windows 7で64ビットのC++サーバーアプリケーションを実行していますが、データベースで選択を行い、結果セットでnext()を呼び出すと、プロセスは単純に終了し、例外もダンプもデバッグ情報もありません ResultSet->next( )。データベースへの書き込みは問題なく動作し、読み取りと書き込みの両方が 32 ビット バージョンで動作します
インスタント クライアントと SDK に付属の win64 oracle ライブラリの 11.2 バージョンを使用しています。
編集:それは最も単純なコードです
IRecordSet は、next や getField などの DB ドライバーの一般的な機能の単なるインターフェイスであり、ここに実装されています。
ここで、m_pResultSet は oracle::occi::ResultSet* です。
c++ - ベクトルの使い方OCCI setDataBufferで?
varchar2(20)という名前の列が1つしかないmytable2という単純なテーブルがあります。これで、テーブルに挿入するstd::stringのベクトルとして保存されている名前のリストができました。executeArrayUpdateを使用したいので、最初にsetDataBufferを実行する必要があります。しかし、私が見ることができるように、人々は常にchar[][20]を使用してデータバッファを設定します。
ここでは2つの問題があるため、これは大きな頭痛の種になります。1つはベクトルから配列に変換すること、2つ目は文字列をcharに変換することです。
第一に、char [20]のベクトルを使用するのに疲れましたが、これはコンパイルされません。Googledで、vectorはchar []を取ることができないと言われているので、std::stringのベクトルをchar*のベクトルに変更しました。
2番目に、「void * p =&names [0]」を使用してベクトルを不規則に変えようとしました。このように、ベクトルを配列と同じように使用できると言う人もいます。
stmt-> setDataBuffer(1、mystring、OCCI_SQLT_STR、20、NULL)を使用し、プログラムをコンパイルして実行しましたが、「mytable2から名前を選択」すると、奇妙な文字しか表示されませんでした。
誰かが以前に同様の問題を抱えていましたか?私は何をすべきか?
私のコードは以下のように単純です:
c++ - 私はどこが間違っていますか?DATEのSetDataBuffer
次のコードを使用して、OracleでDATEの配列フェッチを実行したいと思います。正しくコンパイルされ、DATE型を除く他のすべてのデータ型が正しくエクスポートされます。プログラムは「ora-32146はnullの日付で操作を実行できません」と言っています。
誰もが私が間違っているところを見ることができますか?
c++ - Linux での g++ による OCCI コンパイル
OCCI ライブラリを使用して基本的なプログラムをコンパイルしようとしています。
コンパイルタスクはOKです。
出力は OK で、test.o が生成されます。しかし、オブジェクトファイルをリンクしたい場合は、次のコマンドで、
リンク タスクは失敗し、出力は次のようになります。
私の環境の履歴書:
- Ubuntu リナックス 11.04
- gcc バージョン 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)
- ORACLE_HOME = /opt/oracle/product/10.2.0/db_1
- LD_LIBRARY_PATH = /opt/oracle/product/10.2.0/db_1/lib
- オラクルのバージョン: 10.2.0
LinuxでOCCIを使用してOracleへの接続を作成する必要があり、Pro*Cを使用したくありません。
c++ - OCCI C++ アプリケーションの Visual Studio デバッグ ランタイム エラー
Visual Studio を使用して、OCCI を使用して Oracle 11g データベースにクエリを実行する C++ プログラムを開発しています。この時点では非常に単純なプログラムで、単一のクエリしか作成していませんが、実行時エラーが発生し続けます。最初にこれを VS2010 で開発しようとして、11.2.0.3 OCCI ファイルをダウンロードしましたが、oci.dll にないヒープ割り当てプロシージャのエントリ ポイントに関連するエラーが発生しました。このエラーは、私の Oracle クライアントが 11.2.0.1 であることが原因である可能性があるという印象を受けました。
サポート上の理由でクライアントをより高いバージョンにアップグレードできないため、Visual Studio 2005 を使用することにしました。Oracle の OCCI ドキュメントで、VCCI ライブラリと DLL の vc8 バージョンが 11g に既にインストールされていることを読んだためです。クライアント。そのため、C++/OCCI プログラムを VS 2005 に移行したところ、別のデバッグ ランタイム エラーが発生しました。「アプリケーションを適切に初期化できませんでした」というエラー メッセージ ボックスと、「ldrpWalkImportDescriptor」という VS 出力ウィンドウのローダーからのメッセージです。 () マニフェストの [ORACLE CLIENT DIR]\oci\lib\msvc\vc8\oraocci11d.dll のプローブに失敗しました、ntstatus 0xc0150002"これを解決する方法について。OCCI の VS セットアップに精通している人は誰でも提案できますか? 前もって感謝します...
シェルドン
c++ - OCCIを使用して符号なし64ビット整数をOracleDatabase11gに格納するための最良の方法
バージョン11.2を使用していますが、テーブルフィールドでuint64を直接サポートしていません。パフォーマンスに関して何を提案しますか?主キーである必要があります。
ありがとう
c++ - ORACLE DB で (sys_refcursor を使用して) 結果セットに空の文字列を返す方法
問題に直面した後:
ORA-32108: 最大列またはパラメータ・サイズが指定されていません
少し調べてみたところ、次の 2 つの質問が見つかりました。Oracle 9i が空の文字列を NULL として扱うのはなぜですか? Oracleはnullと空の文字列を区別していませんか? .
これらの質問は、私が得るエラーを説明しています。しかし、これは次の質問につながりました.OracleのResultSetのフィールド値として空の文字列を返すにはどうすればよいですか?
私がこれまでに持っているものは次のとおりです。
- ステートメントを作成する
- 出力パラメータを次のように登録します
oracle::occi::OCCICURSOR
execute
声明GetCursor
返された結果セットを使用するために呼び出す I
上記execute
のエラーのため、 は失敗します。
では、空の文字列 ( ) の値を持つ結果セットにそのようなフィールドを返すにはどうすればよい''
でしょうか?
言い換えれば、ここで指定されたアクションを適用する方法がわかりません-それはサーバー側のものですか? または、コードに何かを追加する必要がありますか? または、この結果セットを返すストアド プロシージャでしょうか。
OCCI (Oracle C++ Call Interface) を使用しています。私の現在の回避策は、単一のスペース ( ) を含む文字列を返すこと' '
ですが、私はそれが好きではありません。
oracle - 16 バイトを超える OCCI getString - アクセス違反
OCCI を使用して Oracle DB に接続しています。私が電話するとき:
と 16 バイト以上を受け取りました。アクセス違反があります。
これに対する答えは、どのウェブサイトでも見つかりませんでした。なぜこれが起こるのか誰か知っていますか?
oracle-call-interface - OTL (OCCI、OCI) を使用した Varchar2 へのバイナリ データの挿入
バイナリの可能性があるデータを OTL で Varchar2 に挿入するにはどうすればよいですか? (もちろんOCI/OCCIでもOKです)
背景: 一般にバイナリではない Varchar2 列が多数ありますが、いつかどこかで発生する可能性があります (\0 と UTF-8 が特に心配です)。
火曜日: この関連する質問を投稿しました: Oracle Varchar2 にバイトを格納し、ASCII をテキストとして扱うにはどうすればよいですか?
c++ - 単純なOracleクエリ(VS10 Exp C ++)の文字列の表示時に「アクセス違反」エラーが発生しました
occiを使用して、C++を介してOracleデータベースに対してSQLステートメントを実行することに関する問題に苦労しています。私のコードは次のとおりです。
表示されるエラーは次のとおりです。
MyDatabaseApp.exeの0x1048ad7a(msvcp100d.dll)で未処理の例外:0xC0000005:アクセス違反の読み取り場所0xccccccd0。
私のプログラムは、次のコード行で「xstring」内で停止します。
クエリを次のように変更した場合:
そして、ループステートメントは次のようになります。
エラーなしで正常に動作します。これは、整数を取得するとプリミティブが返されるだけであるためだと思いますが、オブジェクトが返されると、オブジェクトが爆発します(デストラクタについては考えますが、理由はわかりません...)
私は今日何時間もこれで遊んでいます、そして私はかなり立ち往生しています。
私のシステムに関するいくつかの情報:
- OS-Windows XP
- Oracleバージョン-10g
- IDE-Microsoft Visual Studio 2010 Express C ++
私のプロジェクトのプロパティは次のとおりです。
- C / C++-一般-追加のインクルードディレクトリ=C:\ oracle \ product \ 10.2.0 \ client_1 \ oci \ include;%(AdditionalIncludeDirectories)
- C / C ++-コード生成-マルチスレッドデバッグDLL(/ MDd)
- リンカ-一般-追加のライブラリディレクトリ=C:\ oracle \ product \ 10.2.0 \ client_1 \ oci \ lib \ msvc \ vc8;%(AdditionalLibraryDirectories)
- リンク-入力-追加の依存関係=oraocci10.lib;oraocci10d.lib;%(AdditionalDependencies)
あまり多くの情報と混同していないことを願っています...どんな助けや洞察も素晴らしいでしょう、よろしくお願いします!
編集ループを書き直して値をローカル変数に格納すると、ループの最後にエラーがスローされます。