問題タブ [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.

0 投票する
2 に答える
3005 参照

c++ - C ++ OTL、DTL、またはSOCIライブラリでのSQLインジェクションの防止

私はこれら3つのデータベースライブラリすべてを調べてきましたが、SQLインジェクションを防ぐために何かできるのだろうかと思います。私はそれらの1つの上にlibを構築する可能性が最も高く、インジェクションは私が1つを選ぶ際の最大の関心事です。誰か知ってる?

0 投票する
2 に答える
9515 参照

c++ - SOCI C++ データベース ライブラリの使用方法

プログラムに soci を実装しようとしていますが、方法がわかりません。NetBeans を使用するプロジェクトで、Linux で C++ を使用しています。http://soci.sourceforge.net/doc/structure.htmlの手順に従ってインストールし、ファイル soci.h を /src/core から、soci-mysql.h を /src からコピーしようとしました。私のプロジェクトでは /backends/mysql ですが、コンパイル エラーが発生します (これらのファイルには他の soci ファイルが含まれていますが、すべてのファイルをディレクトリにコピーするのは非論理的です...)。ガイドを何度も読みましたが、何が間違っているのかわかりません。例には、これらのファイルのみが含まれています。

ありがとう。

編集:回答の下のコメントに詳細を記載しました。soci を実装するためにどのような手順を踏む必要があるのか​​ わかりません。

0 投票する
1 に答える
1971 参照

c++ - SQLite は私のゲームに適していますか?

私は自分のオンライン カード ゲーム (PostgreSQL、Oracle など) 用にさまざまなデータベース ライブラリを調べてきました。SOCI + pg または Oracle ははるかに強力ですが、コンパイル、統合、およびその他の処理が非常に困難です。私はする必要があります。

簡単に言えば、これらは私の要件です。ユーザー名、ハッシュ、勝敗、電子メールを保存します。とてもシンプルです。

ゲーム自体は、データベースと頻繁に通信することはありません。プレーヤーがログインすると、ユーザー名で行を取得し、入力したパスワードによって生成されたハッシュでハッシュを検証してログインします。

それ以外は、サーバーはデータベースにアクセスして、ユーザーを追加したり、ラウンドをプレイした後に勝敗を記録したり、個人情報を更新したりします。

SQLite が制限付きの同時実行をサポートしていることを考えると、100 ほどのカード ゲームを同時に実行している場合でも、これは私のニーズには問題ないはずです。

上記を振り返って、SQLite は私に適していますか、それともより複雑なソリューションを選択することを真剣に考えるべきですか? データベースは私の強みではないことに注意してください。

ありがとう

0 投票する
1 に答える
2474 参照

c++ - OTL と SOCI の違い

C++ データベース ライブラリ OTL と SOCI の長所と短所は何ですか? 特に、データベースが SQL Server 2008 を使用している私のプロジェクトに関係する違いは何ですか?

私は以前にどちらも使用したことがなく、プロジェクト中にライブラリを変更したくありません。

0 投票する
2 に答える
3780 参照

c++ - SOCI を正しくインストールするにはどうすればよいですか?

しばらくの間、プログラミングから遠ざかっていた厄介な問題に直面しています。データベースを使用して特定の情報を保存する必要がある個人的なプロジェクトを開始するつもりであり、SQLite を使用することにしましたが、C っぽい API が気に入らなかったため、SQLite wiki で SOCI ラッパーに出会いました。

私は SOCI の公式 Web サイトにアクセスし、ドキュメントを読み、試してみることにしました。ドキュメントの「インストール」の章の指示に従い、すべての要件をインストールした後、コンパイルしてインストールしました。

すべてのテストは正常に完了しましたが、g++ test.cpp -o1 -lsoci_core -lsoci_sqlite3次のようなプログラムを ( でコンパイルした後に)実行しようとすると、次のようになります。

test.cpp:

「共有ライブラリの読み込み中にエラーが発生しました: libsoci_sqlite3.so.3.1: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません」というエラーが表示されます。しかし、インストール ログを見ると、共有ライブラリがインストールされていることがはっきりとわかります。

0 投票する
1 に答える
588 参照

c++ - SOCI c++ データベース アクセス ライブラリを使用してテーブルの関係を管理することは可能ですか?

多対多の関係を持つ 2 つのテーブルがあるとします (つまり、関係にのみ使用される 3 番目のテーブルがあります)。

SOCI はステートメントでさまざまなタイプの「結合」をサポートしていますか?

はいの場合、すべてのデータベース (ドキュメントではいわゆるバックエンド) で動作しますか?

ありがとう!

0 投票する
1 に答える
1604 参照

c++ - SOCIc++データベースアクセスライブラリを使用したブーストタプルの行セットに関する問題

最新のsociおよびboostライブラリでタプルの行セットを使用すると、コンパイルエラーが発生します。

ネット上で例を見つけましたが、使用している最新のSOCIのバージョンではコンパイルされません。

問題を引き起こしている部分はこれです:

ネット上の例から得た完全なコードは次のとおりです。

}

次の行で失敗します。

そして、これが私が完全に理解していないエラーです:

何が原因である可能性があるかについての考えはありますか?

どうもありがとう!ルドビッチ


解決策は

1/括弧を追加するにはsoci::rowset> rows =(sql.prepare << "select x(location)、y(location)from citys");

2 /答えとして提案されていることを行う:#includeまたは#define

0 投票する
2 に答える
767 参照

c++ - ブロックの unsigned char* メモリを [signed] char* メモリのブロックに変換するにはどうすればよいですか?

URLから画像を取得し、sqlite3 blobとしてキャッシュする必要があるiPadプロジェクト(iOS 5.1)に取り組んでいます。ASIHTTPRequest を使用して画像データをフェッチし、SOCI を使用して blob をキャッシュ テーブルに挿入しています。このプロジェクトは C++ で書かれています (最小限の Objective-C が混在しています)。

問題は、ASIHTTPRequest が NSData オブジェクトを介してバイナリ データを返すことです。そこから const unsigned char* ポインタを取得できます。しかし、SOCI のインターフェイスは、char* ポインターを介して blob データを読み書きするためのインターフェイスのみを提供します ... (SOCI は、sqlite_blob を開く/書き込む/読み取る前に、データを char* バッファーに内部的に書き込みます)。

それで、問題は、unsigned char* バッファを char* バッファに変換することは実行可能な解決策ですか? ..もしそうなら、どうすればいいですか?..そうでなければ、これを解決するために他にどのようなオプションが必要ですか?

0 投票する
2 に答える
1033 参照

c++ - SociSessionが接続を解放していません

私はアプリをデータベースと相互作用させるためにsociを使用しており、現在はMySQLサーバーを使用してテストしています。SOCIを単純なクラスにラップし、クラスのConnectメソッドでsession.open()を呼び出します。

次に、デストラクタでcloseメソッドを呼び出します

しかし、クラスを数回使用すると(このクラスのオブジェクトを作成および破棄する)、sociがMySQLサーバーに接続できず、接続が多すぎるというエラーが発生します。デストラクタでcloseメソッドを呼び出すため、混乱しています。sociが接続を解放する必要があると思います。soci docsをチェックすると、close()以外は何も表示されません。

soci :: sessionに接続を解放させる方法はありますか?

0 投票する
1 に答える
879 参照

c++ - Linux/ubuntu の静的ライブラリとしての Soci?

セキュリティ上の理由から、プログラムを静的に soci にリンクする必要があります。

バックエンドが postgresql であるため、静的ライブラリ libsoci_core.a と libsoci_postgresql.a をビルドしました。

私の問題は、これらのライブラリを使用してプログラムをビルドすると、リンク エラーが発生することです。

[...]/lib/libsoci_core.a(backend-loader.cpp.o): 関数 `(anonymous namespace)::do_unload(std::basic_string, std::allocator > const&)':

backend-loader.cpp:(.text+0x623): `dlclose' への未定義の参照

backend-loader.cpp のコードを見ると、dlclose およびその他の動的ライブラリ ロード関数が呼び出されます。

したがって、これらのエラーを回避して「真の」静的ビルドを作成することさえ可能かどうか疑問に思っています。

または、このエラーが発生しないようにするにはどのオプションを使用する必要があり、コードは静的 posgresql ライブラリを呼び出しますか?

ありがとう!