問題タブ [soci]
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++ - SOCI: 多くの列を処理するには?
SOCI を使用して PostgreSQL データベースにアクセスしています。私が挿入して選択している特定のテーブルには、(現在) 72 列あります。私の質問は、非常に多くの列をどのように処理するのが最善ですか?
選択には、SOCI 動的結果セットを使用するのがおそらく最適であると判断しました。このようにして、列をループできます。
しかし、挿入には苦労しています。私が達成したいのは、次のようなものです。
このようなことは可能ですか?多数の列を簡単に処理する方法を見つけることができませんでした。
sqlite - soci は NUMERIC 列に対して常に同じ型を返すとは限りません
soci ライブラリを使用して sqlite3 データベースにアクセスします。
(これは私の実際のコードではありません。問題を説明するために非常に単純化されています。)
さて、ほとんどの場合、これでうまくいきます。ただし、行のインデックス 1 の値が int ではなく文字列である場合があります (std::bad_cast
例外が発生します)。対応する列の SQL タイプは ですNUMERIC(8) NOT NULL
。私はかなりのデバッグを行いましたが、行のエントリ数とその値は常に正しいようです。唯一の問題は、この 1 行の値が文字列である場合があることです。
これは、soci のバグであるか、私の側の誤った仮定である可能性があります。私の仮定は、列の返されるデータ型は常に同じであるということです。タイプの切り替えは、アプリケーションの 1 回の実行で発生する可能性があります。値は、1 つのクエリ結果では int であり、次のクエリ結果では文字列である可能性があります。
基になる sqlite3 API がわからないため、この問題が sqlite3 に起因するのか、soci に起因するのかさえわかりません。行の値の型を確認し、文字列の場合は int に変換します。しかし、これが予期された動作なのかバグなのかを知ることは重要です。誰かがこれについてコメントできますか?
編集:
新しい行は次のように挿入されます。
次のマッピングを持つbo.timestamp
a はどこにありますか:boost::posix_time::ptime
Helper::Time
ptime
aを 1.1.1970 以降の秒数に変換します。REP_TIMESTAMP
このコードを使用して列に文字列を取得する方法がわかりません。
c++ - C++ を使用したデータへのアクセス
リソースが非常に少ないシステムにインストールされるアプリケーションをゼロから開発しています。取得したデータを保存し、他のプロセスがそのデータを照会できるデータベースにアクセスします。
最後に、C++ と sqlite を使用することにしましたが、問題は、SOCI や ODB など、データを操作するためのレイヤーの使用を決定することです。
センサーの情報について話しているので、データの保存とアクセスにかかる時間を最適化する必要があります。何を使用することをお勧めしますか?、ODB? SOCI? 他の?
c++ - OCI (Oracle Call Interface) リンケージ エラー - Visual Studio 2012
WindowsでOCI(Oracle Call Interface)を使用するSOCI(http://soci.sourceforge.net/ )をコンパイルしようとしています。
詳細: Visual Studio 2012、Oracle バージョン 11.2.0。64ビット
$(ORCALE_HOME)/OCI/LIB/MSVC
ライブラリを見つけました。しかし、それは好きではありません(私は と の両方を試しましoraocci11.lib
たoci.lib
。
私が得るリンケージエラー:
何か案は?私は本当にそれに立ち往生しています。
みんなありがとう
c++ - SOCIの問題
MySQL に簡単にアクセスするために SOCI ライブラリを使用しようとしていますが、ライブラリのインストールに行き詰まっています。
私がこれまでに行ったことは次のとおりです。
- プロジェクトを作ってCMakeでコンパイル
- コンパイル後に作成された lib/release ディレクトリにプロジェクトをリンクしました。
- プロジェクトを MySQL C Connector lib ディレクトリにリンクしました
ここに私の追加のインクルードディレクトリがあります: http://puu.sh/6qGNP.png
しかし、どういうわけか、サンプル プログラムをコンパイルすると、次のようなリンカ エラーが大量に発生します。
1>main.obj : エラー LNK2019: 未解決の外部シンボル "パブリック: 仮想 __thiscall soci::details::standard_into_type::~standard_into_type(void)" (??1standard_into_type@details@soci@@UAE@XZ) 関数で参照" public: virtual __thiscall soci::details::into_type::~into_type(void)" (??1?$into_type@H@details@soci@@UAE@XZ) 1>main.obj: エラー LNK2001: 未解決の外部シンボル「保護: 仮想 void __thiscall soci::details::standard_into_type::post_fetch(bool,bool)」 (?post_fetch@standard_into_type@details@soci@@MAEX_N0@Z)
どこで台無しにしましたか?
c++ - C++ の SOCI/ODBC 経由の SQL Server ストアド プロシージャ
SOCI ライブラリを使用して、ODBC 経由で SQL Server DB とプログラムでやり取りしています。ストアド プロシージャの出力パラメータを介して値を取得できません。いくつかのコード ( SOCI ドキュメントをモデルにしたもの)...
私のコードはエラーや例外をスローしませんが、何もフェッチされません。exec
さまざまな方法 (通常の構文、ODBCcall
構文など) で呼び出してみましたが、何も機能しないようです。ここからエラーがこれに戻るかどうか疑問に思っています...
入力/出力パラメーターが省略された場合、またはパラメーターにリテラルが指定された場合、ドライバーは出力値を破棄します。
残念ながら、少なくとも私が知る限り、SOCI は実際にはパラメーター マーカーをサポートしていないようです。
この種の構文を使用してコードを機能させました...
しかし、それは理想的ではありません。理由は明白だと思います。
SOCI を使用していて、これを機能させるために私が別の方法で行う必要があることについて意見を持っている人はいますか?
編集: soci-users フォーラム/メーリング リストから次の応答を受け取りました...
私はSOCIを数年間使用していませんが、2011年末のsociバージョン2のSQL Serverでストアドプロシージャを正常にODBCで動作させることができました(私はそう思います)。
それを行うには、プロシージャではなくステートメントを使用する必要があったことを覚えています。
ループで SQLMoreResults を呼び出すようにバックエンドを修正する必要がありました。
SOCI ではサポートされていないと思われる出力パラメーターを ODBC で直接処理しましたが、その上に C++ レイヤーもありました。
しかし、私は最近大学を卒業したばかりで (今月最初の仕事を始めたばかりです!)、C++ とデータベース アプリケーションの経験が比較的少ないため、できるだけ多くの支援を提供していただければ幸いです。たとえば、上記の回答に関しては、最後の 2 点がはっきりとわかりません。
c++ - soci ライブラリの未解決のシンボル エラー
未解決のシンボル エラーが何であるかは理解していますが、この特定のライブラリでこの特定の状況でエラーが発生する理由がわかりません。これがエラーの出力です。
次のリンク フラグを使用していることに注意してください。
soci::session
他のシンボル (コンストラクターやデストラクタなど)への参照が解決されていることにも注意してください。
私は何を間違っていますか?リンクする必要がある別のソーシャルライブラリはありますか?
編集:私はMac OS Xで作業しており、自作(経由brew install soci --with-pg
)によるインストールと、3.2.2および3.2.1のスタンドアロンインストールの両方を試したことに注意してください。
c++ - MsgPack の問題 - デストラクタ、pack_raw_body など
C++ データベース アクセス APIMsgPack
用に作成しているカスタム バックエンドの一部として使用しています。当初、一部のクラスにはメンバー変数としてオブジェクトがありましたが、オブジェクトのデストラクタでいくつかの問題に遭遇しました。この問題は、参照がそのオブジェクトの一部をカウントする方法と、複数解放されるオブジェクトの基礎となるメモリに関連していると思います回。SOCI
SOCI
MsgPack::sbuffer
SOCI
SOCI
MsgPack
この問題を解決するために、MsgPack::sbuffer
メンバー変数をメンバー変数に置き換え、これらを使用してメソッドを使用して s をstd::vector<char>
埋めることにしました。残念ながら、これにも問題があります。MsgPack::sbuffer
pack_raw_body
次の(疑似)コードスニペットを検討してください...
出力...
一般に、MsgPack オブジェクトの操作方法を理解するのに苦労しているだけで、ドキュメントや例が少しまばらです。人々が提供できるどんな助けも大歓迎です!
c++ - SOCIでSQLite3ネイティブAPIにアクセスするには?
現在、SQLite3 で SOCI を使用しています。カスタム拡張機能をデータベース ( http://www.sqlite.org/loadext.html )にロードできるようにするために、ネイティブ SQLite3 関数を呼び出す必要があるという点に到達するまで、すべてが正常に機能していました。私が使用しているコードは次のとおりです。
コードの最後の行に到達すると、実行時にセグメンテーション違反が発生します。デバッガーを使用して、バックエンドが返すポインターが有効かどうかを確認しましたが、有効です。他のネイティブ SQLite3 API 関数も呼び出してみましたが、すべてセグメンテーション エラーが発生します。ここで何が欠けていますか?これらは私のコードに含まれています:
sqlite3.h も含めようとしましたが、同じ結果が得られます。私はclang ++を使用しています。何か案は?