問題タブ [mysqlpp]

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 投票する
1 に答える
540 参照

blob - mysqlpp::sql_blob を std::string に変換しても安全ですか?

MySQL データベースからバイナリ データを取得しています。mysqlpp::sql_blob タイプとして出てきます。

この BLOB がシリアル化された Google Protobuf であることはたまたまです。正常にアクセスできるように、シリアル化を解除する必要があります。

ParseFromString() は mysqlpp:sql_blob 型を対象としていないため、これはコンパイル エラーになります。

ただし、キャストを強制すると、正常にコンパイルされます。

これは安全ですか?mysqlpp ドキュメントからのこのスニペットのために、私は特に心配しています:

「C++ 文字列はバイナリ データを適切に処理するため、sql_blob の代わりに std::string を使用できると考えるかもしれませんが、現在の String の設計は C 文字列を介して std::string に変換されます。その結果、BLOB データは切り捨てられます。 SSQLS の作成中に最初に埋め込まれた null 文字で。文字列または SSQLS メカニズムのいずれかを完全に再設計しない限り、これを修正する方法はありません。」

ご協力ありがとうございます。

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

c++ - mysqlpp::StringをC++intに変換する

わかりました。VisualStudioで使用されているmysqlppライブラリを使用してMySQLデータベースに接続するのは比較的初めてで、mysqlpp::String型のベクトルをint型のベクトルに変換しようとして問題が発生しています。mysqlppの経験がある人はいますか?少し手伝ってくれませんか?私が基本的にやろうとしていることの例を以下に投稿しました。これは私のコードに表示されています。ベクトルfutureItemsetsがすでに設定されていて、内容を整数ベクトルにコピーしたいとします。あなたが提供できるどんな助けにも感謝します!

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

c++ - UseQueryResultはmysqlppのメンバーではありません

これは、このコードを実行したときに発生するエラーです。

さらに興味深いのは、次の行に問題がないことです

本当に私を夢中にさせます。手動でresult.hも含めました

これらのすべてのコンボを試しました

result.h、mysql ++。h、connection.hを含めます

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

c++ - Qt / MySQL++/ベクトル反復の質問

現在取り組んでいるQt/MySQL++プロジェクト内のベクトル反復法について質問があります。

私はこれまでforループを使用してループを反復処理してきましたが、C ++の初心者であるため、一般的に受け入れられている方法がvector::iteratorを使用することであることに気づいていませんでした。私はそれらをこのモデルに変換する方法を模索してきましたが、少し行き詰まっています。私のコードは次のようになります。

(コネクタは私のカスタムデータベース接続クラスのインスタンスです)

私の問題はi、QTableWidgetItemを設定する場所を定義するために使用しているため、インクリメンタルsize_tの代わりにvector::iteratorを使用する方法がわからないことです。ただし、両方を使用するのは間違いなくばかげているようです。

何か案は?

どなたでも、どなたでもよろしくお願いします!

XT

更新:tableWidgetの代わりにQSqlオブジェクトとtableViewを使用するようにプログラムを変更しました。すべてがうまく機能します!質問を読むのに時間を割いてくれた人に感謝します!

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

c++ - mysql++ グローバル テーブル変数

ドキュメントを読み、例を見ましたが、C++ でテーブルをグローバル変数に割り当てる方法がまだわかりません。私は少し甘やかされているかもしれません。私はPythonから来ており、テーブルをグローバル変数に割り当てることは、mysqldbを使用すると本当に簡単なことです.

テーブルをグローバル変数に割り当てて、mysqlpp クラスの外部からアクセスできますか?

例として、次のコードをコンパイルすると、次のエラーが発生します: エラー: 'sched_recs' はこのスコープで宣言されていませんでした

代わりに for ループをクラスに戻すと、すべて正常に機能しますが、これは制限です。これが唯一の方法ですか?すべての例がそう思わせるようです。

0 投票する
3 に答える
453 参照

c++ - std::ostreamのプライベート継承と演算子の使用<<

問題:

エラー(MS Visual Studio 2010)はエラーC2666です:'std :: basic_ostream <_Elem、_Traits> :: operator <<':5つのオーバーロードは同様の変換を行います

私は何を間違っているのですか、それともこれは別のMS Visual Studioのバグですか?

回避策: 次のメンバーメソッドを追加することは機能しているようですが、根本的な原因についての洞察が必要です。

背景: VS2010は(とりわけ)std :: ostreamのパブリック継承をサポートしていないため、MySql++はVisualStudio 2010(メーリングリストを参照)でコンパイルされません。回避策として、私はプライベート継承を試みています。これは、構成よりもハッキングが少ないためです。MyClass&operator <<(const char * str){std :: ostream&os = * this; os << str; *thisを返します。}

完全なエラーメッセージ

0 投票する
0 に答える
534 参照

c++ - C ++ VisualStudiomysqlppの深刻なメモリリーク

私はこの1か月間これに頭を悩ませてきましたが、何が起こっているのかまだ理解できません。

問題は、VisualStudio2005を使用してコンパイルされたWindowsServer2008で実行されているC++アプリケーションで非常に深刻なメモリリークが発生することです。これは管理対象プロジェクトです。アプリケーションは(タスクマネージャーによると)約5〜6 MBで開始し、約200MBのマーク付近で障害の兆候を示し始めます。タスクマネージャーが大雑把なツールであることは知っていますが、リークの規模を考えると、使用しても問題ないようです。

問題をMySQLデータベースの相互作用に絞り込みました。アプリケーションがデータベースと対話しない場合、メモリはリークされません。

すべてのデータベースの相互作用はmysql++を使用します。私はtangentsoft.netのmanページにあるビルド手順に従いました。

スレッドセーフについてコードを評価し(つまり、各スレッドがそのスレッドのmysqlppオブジェクトのみを使用し、他のスレッドは使用しないことを確認しました)、「new」を使用して作成された動的に生成されたオブジェクトに対してすべてのデストラクタが呼び出されることを確認しました。

インターネットを見ると、どこかにリークがあることを示すmysqlppクラスのユーザーからのさまざまなレポートが表示され続けています。特に、mysqlppを使用したときにWinCAPIがどのようにリークするかについての議論がありました。

http://www.phpmarks.com/6-mysql-plus/ffd713579bbb1c3e.htm

この議論は修正で終わっているようですが、アプリケーションで修正を試してみると、それでもリークが発生します。

上記のスレッドで引用されているバージョンのアプリケーションを実装しましたが、マニュアルページからのアドバイスをいくつか追加しました。

ループの各ステージを調整するためだけにSleep(50)を追加して、各関数が「落ち着く」時間を確保できるようにしました。おそらく必要ないことはわかっていますが、少なくともこの方法で、原因としてそれを排除することができます。

それにもかかわらず、このプログラムは非常に急速にリークします(1時間あたり約1MB)。

私はいくつかの場所で私と同様の質問をしましたが、結論は出ていません:(

だから私はこの問題だけではありません。mysqlppクラスは有用性に定評があるため、非常に堅牢である必要があります。それが事実であることを考えると、私はまだ私が間違ったことを見ることができません。問題に光を当てる可能性のあるVisualStudio2005でのmysqlppの経験を持っている人はいますか?

乾杯、アダム。

編集

ループ内でcが複製された場合に備えて、ポインターを使用して別の例を作成しました。

これも漏れます。次に、このコードに基づいて制御例を作成しましたが、これはまったくリークしません。

また、MySQL C APIの呼び出しをここに残して、リークの原因ではないことを証明していることに注意してください。次に、ポインターを使用して例を作成しましたが、接続/切断の呼び出しはありませんでした。

これは漏れません。

したがって、違いはmysqlpp :: connect/disconnectメソッドの使用だけです。mysqlppクラス自体を掘り下げて、何が起きているかを確認してみます。

乾杯、アダム。

編集

これは、チェックが行われるリークコードの例です。

乾杯、アダム。

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

c++ - mysqlpp::Query::store() の MySQL++ malloc_error_break

これのバックルアップ。

このようなエラーについてオンラインで何も見つからないのは奇妙ですが、それは私を夢中にさせています. うまくいけば、皆さんはこの問題に光を当てることができます.

テーブルから基本的なデータを取得するために MySQL++ を使用しています。データベースに問題なく接続し、クエリは機能しているように見えますが、mysql::Query::store() を実行すると malloc エラーが発生します。

gdb バックトレースは私に与えます

Load () は、これが実行されている関数です。

クエリを 2 回実行した場合 (好奇心からこれを実行しました)、

malloc エラーは発生しませんが、SQL エラーが発生します。

私のg ++​​バージョンは

何か案は?以前に MySQL++ を使用したことがありますが、これで問題が発生したことはありません。

また、この Load() シーケンスはたまたま動的にリンクされたライブラリ内にあります。(ロード/アンロード システムがあります。) MySQL セクションをコメント アウトし、コンパイルしてライブラリをロードすれば、すべて問題ありません。次に、セクションのコメントを外し、再コンパイルしてライブラリをリロードすると (メイン プログラムがまだ実行されている状態で)、クエリが正常に実行されます!!! 重量

どんな助けも信じられないほどでしょう。ありがとう!!