web-dev-qa-db-ja.com

MySQL Connector C ++でのexecute()とexecuteQuery()の比較

MySQLコネクタC++では、データベース(INSERT、UPDATE、DELETE、MERGE)を変更する場合はsql::Statement::execute()関数、使用する場合はsql::Statement::executeQuery()関数を使用できます。単純な読み取り専用クエリを実行します。

クエリの内容がわからない場合、どうすればよいですか。

現時点では、クエリ文字列にINSERT、UPDATE、DELETE、またはMERGEのいずれかのトークンがあるかどうかを確認しています。しかし、これは完璧な方法とはほど遠いものです。

それを行う別の方法はありますか?

ExecuteQuery()を使用してDBを変更するときに、MySQLによって返される警告メッセージを無視するだけですか?

ありがとうございます

3
Pietro

実行呼び出しのそれぞれは、その正確な使用状況に基づいて異なる方法で最適化されます。たとえば、executeUpdateメソッドは、呼び出しから結果セットを返さないことが期待されるため、本来の方法で最適化されます。ニーズに最も適したものを選択する必要があります。以下は、Connector C++リファレンスからの抜粋です。

SQLステートメントがSELECTか、INSERT、UPDATE、DELETEかが事前にわからない場合は、executeメソッドを使用します。 execute()は、SQLクエリがSELECTの場合はtrueを返し、ステートメントがINSERT、UPDATE、またはDELETEの場合はfalseを返します。ステートメントがSELECTクエリの場合、StatementインスタンスでgetResultSetメソッドを呼び出すことで結果を取得できます。ステートメントがINSERT、UPDATE、またはDELETEステートメントの場合、getUpdateCount()を呼び出すことにより、影響を受ける行の数を取得できます。

私が言及した記事はここにあります:

http://dev.mysql.com/tech-resources/articles/mysql-connector-cpp.html

これがお役に立てば幸いです。

4
Mr.Brownstone