1

MySql C++ Connector を介して MySQL のテーブルにアクセスするプログラムを C++ で作成しています。

ユーザーから (GUI または Xml ファイルを介して) レコードを取得します。

ここに私の質問があります:

  1. 最初に指定されたレコードをテーブルで検索し、存在しない場合は追加する必要があります。

  2. または、レコードを追加し、それが一意である場合、MySQL にレコードを追加させますか?

これが私のテーブルの例です:

mysql> describe ing_titles;
+----------+----------+------+-----+---------+-------+
| Field    | Type     | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| ID_Title | int(11)  | NO   | PRI | NULL    |       |
| Title    | char(32) | NO   |     | NULL    |       |
+----------+----------+------+-----+---------+-------+

判断では、プログラムがユーザーに迅速に応答できるようにするソリューションを探しています。

開発中は小さなテーブル (5 レコード未満) しかありませんが、アプリケーションを正式にリリースするとテーブルが大きくなると予想しています。

参考までに: Windows XP および Vista で Visual Studio 2008、C++、wxWidgets、および MySQL C++ コネクタを使用しています。

4

1 に答える 1

1

問題のフィールドをUNIQUE制約でマークし、INSERT ... ON DUPLICATE KEY UPDATEまたはを使用しますINSERT IGNORE

前者はレコードが既に存在する場合は更新しますが、後者は何もしません。

最初にテーブルを検索するのは効率的ではありません。サーバーへの往復が 2 回必要になるからです。1 回目は検索、2 回目は挿入 (または更新) です。

上記の構文は、1 つの文で同じことを行います。

于 2010-01-29T17:39:43.180 に答える