sqliteとc ++でデータベーステーブルを実際にソートする最良の方法は?

バードバスター

テーブルを永続的に並べ替える必要があります。データベースの作成方法やそのテーブルを制御することはできません。データベースとそのテーブルでさまざまなことを行ういくつかのメソッドを持つC ++で書かれたプログラムがあります。たとえば、印刷、行の呼び出し、行の更新、行のダウンロード、行の更新など、リストは続きます。

私は現在、ソートデータベースを使用しています。指定された列に関してデータベースを実際にソートする必要があり、ユーザーが指定した場合は別の列でサブソートできます。そのため、たとえばサードパーティのアプリケーションで表示された場合、並べ替えが実行された後、すべてのデータが並べ替えられて表示されます。

SELECT * FROM table1 ORDER BY Col1、Col2はソートされたテーブルを返しますが、実際のメモリの観点からは、すべてのデータはテーブルが同じであるため、データベースビューアのORDERBYの後に列1がすべて故障した場合それでも列1はすべて順不同で表示されます。並べ替え後、データベース内のデータを並べ替える必要があります。データベースビューアで表示すると、すべてが正常になります。

これは私の最初の投稿の完全な編集です。ご参考までに

バードバスター

@RogerRowlandの助けを借りて、私はこの問題を解決することができましたが、私と同じことをしたいと思っている人たちのために。なぜ実際にこれを実行したいのかはわかりませんが、ソートされたデータを返すだけでなく、データベーステーブルのデータを実際にソートする必要があり、sqlite3とc ++を使用している場合は、これを実行します。

ステップ1)

rc = sqlite3_prepare(this->dbPointer, "CREATE [TEMP] VIEW tempViewOfSortedTable AS SELECT * FROM tableName ORDER BY columnName", -1, &ppStmt, NULL);

ステップ2)すべてのテーブル情報(列名とタイプなど)を取得し、を使用して文字列に格納します。

rc = sqlite3_prepare_v2(this->dbPointer, "pragma table_info tableName", -1, &ppStmt, NULL);

手順3)元のテーブルと同じ列とプロパティを持つ新しいテーブルを作成します。

sprintf(strQuery, "CREATE TABLE tempUserTable (%s)", strListOfFieldsAndTypes);
if (rc == SQLITE_OK)rc = sqlite3_exec (this->dbPointer, strQuery, NULL, NULL, &errMsg);

手順4)ビューの並べ替えられたすべてのデータを新しいテーブルにコピーします。

sprintf(strQuery, "INSERT INTO tempUserTable SELECT %s FROM tempViewOfSortedTable", strListOfFields);
if (rc == SQLITE_OK)rc = sqlite3_exec (this->dbPointer, strQuery, NULL, NULL, &errMsg);

ステップ5)古いテーブルを削除します

if (rc == SQLITE_OK)rc = sqlite3_exec (this->dbPointer, "DROP TABLE tableName", NULL, NULL, &errMsg);

手順6)必要に応じて、新しいテーブルの名前を古い名前に変更します。

if (rc == SQLITE_OK)rc = sqlite3_exec (this->dbPointer, "ALTER TABLE tempUserTable RENAME TO 'tableName'", NULL, NULL, &errMsg);

一時ビューを作成しなかった場合、またはデータベースを閉じる前にこれを繰り返す場合でも、一時ビューを作成しないと、データベースを閉じるまで一時ビューが持続するため、ビューを削除することもできます。

また、これが高速ルートであると主張しないでください。私がsqlite3_execを使用していた唯一の理由は、他の誰かの古いコードをリサイクルしたためです。自分でsqlite3_prepare_v2に置き換えますが、同じ質問を持つ他の人のためにこれを取得したかったのです。

ソース。

http://www.sqlite.org/lang_createview.html

http://www.sqlite.org/capi3ref.html

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Spring BootとJPAを使用してlikeステートメントを使用してデータベースにクエリを実行するRESTサービスを実装するための最良の方法は何ですか?

分類Dev

SpringとHibernateを使用して複数のデータベースに分散トランザクションを実行する「最良の」方法は何ですか

分類Dev

dbunit実際のデータベースをテストデータベースと同期する方法

分類Dev

オブジェクトとそのタイプをMySQLデータベースに保存する最良の方法

分類Dev

アプリにローカルに保存されたユーザーのデータを保護するための最良の方法と、セキュリティレベルをテストする方法は何ですか?

分類Dev

アプリにローカルに保存されたユーザーのデータを保護するための最良の方法と、セキュリティレベルをテストする方法は何ですか?

分類Dev

SQLiteデータベースに1億行以上を挿入する最良の方法は何ですか?

分類Dev

C#オブジェクトをSQLiteデータベーステーブルにマップする方法は?

分類Dev

MySQLとPHP-データベーステーブルから国の降順のリストを取得する最良の方法

分類Dev

データベーステーブルのADMINエントリとUSERSエントリを分離するための最良の方法

分類Dev

Azureテーブルストア:コメントデータのパーティションと行キーを構成する最良の方法は?

分類Dev

これを設計するための最良の方法:c#の列挙型または個別のデータベーステーブル

分類Dev

データセットとデータテーブルを使用して、データベースなしでCrystalレポートC#を作成し、このデータテーブルに独自の変数を入力する方法は?

分類Dev

C#ASP.Net Razorページでテーブルデータをリストとして表示する最良の方法

分類Dev

Postgresのc#でテーブルフィールドのデータベースデータ型を取得するための最良かつ高速な方法は何ですか?

分類Dev

ソートされたデータをキー/値とともにC#で保存するための最良の方法は何ですか

分類Dev

AndroidのSqliteデータベースでテーブルを作成する方法

分類Dev

C ++ソースファイル内の一部の関数をプライベートにする最良の方法は何ですか?

分類Dev

データにいくつかのトリッキーなものを含むデータベーステーブルをまとめる良い方法

分類Dev

データベースに、行数の多いテーブルまたは行数の少ないテーブルがあるのは良いことですか?

分類Dev

C ++で最良の方法でクラスメンバーベクトルの要素をループする方法は?

分類Dev

SQLiteデータベースとテーブルを作成する

分類Dev

underscore.jsで同じjsonを使用してテーブルの見出しとデータを別々に構築するための最良の方法は?

分類Dev

ユーザーがAngularでデータベース内のアイテムを削除したときにUIを更新するための最良の方法

分類Dev

反復モデルと最良のモデルをテンソルフローに保存する方法は?

分類Dev

Flutterで異なる時間にSqliteデータベースに複数のテーブルを作成する方法

分類Dev

SQLite:データベース内のすべてのテーブルに列を追加する方法は?

分類Dev

開発データベースを本番データベースとマージする最良の方法は何ですか?

分類Dev

C#でデータテーブルの親と子を使用してデータベースからtreeveiwにデータをノード化する方法

Related 関連記事

  1. 1

    Spring BootとJPAを使用してlikeステートメントを使用してデータベースにクエリを実行するRESTサービスを実装するための最良の方法は何ですか?

  2. 2

    SpringとHibernateを使用して複数のデータベースに分散トランザクションを実行する「最良の」方法は何ですか

  3. 3

    dbunit実際のデータベースをテストデータベースと同期する方法

  4. 4

    オブジェクトとそのタイプをMySQLデータベースに保存する最良の方法

  5. 5

    アプリにローカルに保存されたユーザーのデータを保護するための最良の方法と、セキュリティレベルをテストする方法は何ですか?

  6. 6

    アプリにローカルに保存されたユーザーのデータを保護するための最良の方法と、セキュリティレベルをテストする方法は何ですか?

  7. 7

    SQLiteデータベースに1億行以上を挿入する最良の方法は何ですか?

  8. 8

    C#オブジェクトをSQLiteデータベーステーブルにマップする方法は?

  9. 9

    MySQLとPHP-データベーステーブルから国の降順のリストを取得する最良の方法

  10. 10

    データベーステーブルのADMINエントリとUSERSエントリを分離するための最良の方法

  11. 11

    Azureテーブルストア:コメントデータのパーティションと行キーを構成する最良の方法は?

  12. 12

    これを設計するための最良の方法:c#の列挙型または個別のデータベーステーブル

  13. 13

    データセットとデータテーブルを使用して、データベースなしでCrystalレポートC#を作成し、このデータテーブルに独自の変数を入力する方法は?

  14. 14

    C#ASP.Net Razorページでテーブルデータをリストとして表示する最良の方法

  15. 15

    Postgresのc#でテーブルフィールドのデータベースデータ型を取得するための最良かつ高速な方法は何ですか?

  16. 16

    ソートされたデータをキー/値とともにC#で保存するための最良の方法は何ですか

  17. 17

    AndroidのSqliteデータベースでテーブルを作成する方法

  18. 18

    C ++ソースファイル内の一部の関数をプライベートにする最良の方法は何ですか?

  19. 19

    データにいくつかのトリッキーなものを含むデータベーステーブルをまとめる良い方法

  20. 20

    データベースに、行数の多いテーブルまたは行数の少ないテーブルがあるのは良いことですか?

  21. 21

    C ++で最良の方法でクラスメンバーベクトルの要素をループする方法は?

  22. 22

    SQLiteデータベースとテーブルを作成する

  23. 23

    underscore.jsで同じjsonを使用してテーブルの見出しとデータを別々に構築するための最良の方法は?

  24. 24

    ユーザーがAngularでデータベース内のアイテムを削除したときにUIを更新するための最良の方法

  25. 25

    反復モデルと最良のモデルをテンソルフローに保存する方法は?

  26. 26

    Flutterで異なる時間にSqliteデータベースに複数のテーブルを作成する方法

  27. 27

    SQLite:データベース内のすべてのテーブルに列を追加する方法は?

  28. 28

    開発データベースを本番データベースとマージする最良の方法は何ですか?

  29. 29

    C#でデータテーブルの親と子を使用してデータベースからtreeveiwにデータをノード化する方法

ホットタグ

アーカイブ