問題タブ [qsqldatabase]

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 に答える
778 参照

c++ - QTabs 間で確認できる SQLite データベースへの変更をコミットします。

ユーザーをログイン/ログアウトできるシンプルなアプリケーションがあります。ユーザーがログインすると、アプリケーションはメイン ウィンドウ (従業員/管理者/顧客) に適切なタブを表示します。私はそれを持ってQMainWindowQTabWidgetます。私QMainWindowはデータベースを作成します(このために特別なクラスを実装しました):

従業員、管理者、クライアントのタブは次のようになります。

誰でも (従業員、クライアント、管理者) データベースに変更を加えることができます (たとえば、管理者はサービスを挿入でき、ユーザーは利用可能なサービスを確認できます)。ただし、管理者がサービスを追加し (開いているデータベースで挿入操作を行う)、ログアウトすると、クライアントがログインすると、管理者が行った変更が表示されません。アプリケーションを再起動してクライアントがログインすると、新しく追加されたサービスが表示されます。

サービスの追加は次のようになります。

データベースが常に開いていることが問題だと思いますが、データベースに何かを挿入/削除した直後に変更を利用できるようにするにはどうすればよいですか? 作成時にデータベースを開き、QMainWindowデストラクタで閉じます。

データベースを使用する必要があるたびにデータベースを開閉することを考えましたが、それが良い解決策かどうかはわかりません。

追加しても:

助けにならない。

クライアントには:QVector<Service*> availableServices;およびがありQComboBox *servicesComboBox;、クライアントがログインしたときに利用可能なすべてのサービスをチェックします:

Serviceクラス:

最後に、データベースからすべてのサービスを選択します (この方法を使用してコンボボックスをオンにしますClientTab)。

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

c++ - QSqlRelationalTableModel - 同じテーブル、同じ外部キーへの 2 つの参照

私は3つのテーブルを持っています:

ここに画像の説明を入力

QTableViewと を使用して GUI に Orders テーブル (注文の開始日と終了日、ユーザーの姓、サービス名、サービス価格) を表示したいと思いますQSqlRelationalTableModel。テーブルとビューを設定する場所は次のとおりです。

しかし、3 番目の呼び出しを行うsetRelationと、2 番目の呼び出しが上書きされるようです。名前と価格の両方ではなく、GUI でのみ価格を確認できます。そして、サービス テーブルの名前と価格の両方のフィールドをビューに配置する必要があります。

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

qt - qt を使用して Access データベースに接続する


私はQt 4.7.4を使用してWindows 8を使用しています(理由を尋ねないでください:p)このコード行を使用してAccessデータベースに接続しようとしています

もちろん、それは接続されず、IQ は次のようになります。

アプリケーション "C:\Program Files (x86)\Common Files\Microsoft Shared\office14\mso.dll" がキャッシュに見つかりません
"[Microsoft][Pilote ODBC Microsoft Access] 命名規則が正しくありません。"
「QODBC3: 接続できません」

ファイル MSG.accdb は、ビルド フォルダーのルートにあります。

「C:\Program Files (x86)\Common Files\Microsoft Shared\office14\」フォルダーを確認したところ、そこに MSO.DLL ファイルが見つかりました。

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

sqlite - Qt5 で QSqlQuery が非常に遅い場合がある

Qt5ベースのアプリケーションを開発しています。私のアプリケーションでは、sqlite3 データベースを使用しています。そして、アプリの最初の起動時に sqlite3 QSqlQuery.next() が非常に遅いという問題が1つ見つかりました。

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

qt - QSqlDatabase: QThread からの接続を使用できません

「ローカル」と「リモート」の 2 つの QSqlDatabase データベース接続があります。両方の接続を使用する関数があります (ローカル データベースからデータを取得し、リモート データベースに送信します)。QThread クラスからこの関数を実行すると、ローカル接続は機能しますが (予想されるデータを取得しました)、リモート接続は失敗します。しかし、この関数を QThread クラスの外 (main() 内) で実行すると、両方の接続が機能します。

接続を開こうとすると、「QSqlDatabasePrivate::database: データベースを開けません: QMYSQL: 接続できません」というエラー メッセージが表示されて、リモート接続が失敗します。その前に、接続が有効かどうか (isValid()) をテストしてみましたが、問題ありませんでした。また、接続が既に開いているかどうかも確認しましたが、そうではありませんでした。

この情報も見つけましたが、「ローカル」接続はスレッドから機能するため、これは問題ではない可能性があります。

スレッドと SQL モジュール 接続は、それを作成したスレッド内からのみ使用できます。スレッド間の接続の移動や、別のスレッドからのクエリの作成はサポートされていません。 http://doc.qt.io/qt-5/threads-modules.html#threads-and-the-sql-module

このエラーは、Qt 5.5.1、32 ビット、Ubuntu 14.04 で見つかりました。Raspberry Pi、Qt 5.6 でもテストされましたが、結果として「セグメンテーション違反」が発生しました。

なにが問題ですか?

main.c

datahandler.cpp

datahandlerthread.h

datahandlerthread.cpp

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

c++ - QSqlQuery で TINYINT 列を選択すると正しい結果が得られない

非常に単純な MySQL テーブルがあり、QSqlQuery を使用していくつかの行を選択したいと考えています。

ローカルの開発 mysql サーバー (Windows; 64 ビット) に接続しています。

mysql ワークベンチなどの他のツールで SELECT クエリを実行すると、常に正しい結果が得られます (もちろん!)。

QSqlQuery で同じことをすると、まったく行が表示されません!

SQL テーブル定義

ここに画像の説明を入力

両方のプログラムで、同じローカル mysql インスタンスに接続しています。私のマシンまたはネットワーク上に他の mysql サーバーはありません。これは、Oracle の MySQL と MariaDB で発生します。したがって、問題は私のプログラムにあるはずです。

私は何か間違ったことをしていますか、それともここで何が起こっていますか?

更新複数のテストの後、問題は選択したときにのみ発生しますModbusID。テーブル定義をから変更しました

そして今それは動作します。QT のバグのようです。しかし、これが良い解決策だとは思いません。使用方法を知っている場合はTINYINT、回答またはコメントを書いてください。

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

android - QSqlDatabase : ドライバーがロードされていません ドライバーがロードされていません

qt を使用して c++ ライブラリを開発しました。この例では、QSqlDatabase を使用して SQLite データベースから情報を照会しています。注意 : 私のライブラリは qt デスクトップ アプリケーションで正常に動作します (私は Linux で開発しています)。

次のステップは、私のライブラリを Android Studio プロジェクトで使用することです。このために、Android ndkを使用してライブラリをコンパイルしました(このステップは正常に機能します)が、 QSqlDatabase : Driver not loaded Driver not loaded を取得しました。

このエラーは、m_database.setDatabaseName(/Database.db); を呼び出しているときに発生します。

フィードバックをお寄せいただきありがとうございます