問題タブ [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.
c++ - QTabs 間で確認できる SQLite データベースへの変更をコミットします。
ユーザーをログイン/ログアウトできるシンプルなアプリケーションがあります。ユーザーがログインすると、アプリケーションはメイン ウィンドウ (従業員/管理者/顧客) に適切なタブを表示します。私はそれを持ってQMainWindow
いQTabWidget
ます。私QMainWindow
はデータベースを作成します(このために特別なクラスを実装しました):
従業員、管理者、クライアントのタブは次のようになります。
誰でも (従業員、クライアント、管理者) データベースに変更を加えることができます (たとえば、管理者はサービスを挿入でき、ユーザーは利用可能なサービスを確認できます)。ただし、管理者がサービスを追加し (開いているデータベースで挿入操作を行う)、ログアウトすると、クライアントがログインすると、管理者が行った変更が表示されません。アプリケーションを再起動してクライアントがログインすると、新しく追加されたサービスが表示されます。
サービスの追加は次のようになります。
データベースが常に開いていることが問題だと思いますが、データベースに何かを挿入/削除した直後に変更を利用できるようにするにはどうすればよいですか? 作成時にデータベースを開き、QMainWindow
デストラクタで閉じます。
データベースを使用する必要があるたびにデータベースを開閉することを考えましたが、それが良い解決策かどうかはわかりません。
追加しても:
助けにならない。
クライアントには:QVector<Service*> availableServices;
およびがありQComboBox *servicesComboBox;
、クライアントがログインしたときに利用可能なすべてのサービスをチェックします:
Service
クラス:
最後に、データベースからすべてのサービスを選択します (この方法を使用してコンボボックスをオンにしますClientTab
)。
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 ファイルが見つかりました。
sqlite - Qt5 で QSqlQuery が非常に遅い場合がある
Qt5ベースのアプリケーションを開発しています。私のアプリケーションでは、sqlite3 データベースを使用しています。そして、アプリの最初の起動時に sqlite3 QSqlQuery.next() が非常に遅いという問題が1つ見つかりました。
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
c++ - QSqlQuery で TINYINT 列を選択すると正しい結果が得られない
非常に単純な MySQL テーブルがあり、QSqlQuery を使用していくつかの行を選択したいと考えています。
ローカルの開発 mysql サーバー (Windows; 64 ビット) に接続しています。
mysql ワークベンチなどの他のツールで SELECT クエリを実行すると、常に正しい結果が得られます (もちろん!)。
QSqlQuery で同じことをすると、まったく行が表示されません!
SQL テーブル定義
両方のプログラムで、同じローカル mysql インスタンスに接続しています。私のマシンまたはネットワーク上に他の mysql サーバーはありません。これは、Oracle の MySQL と MariaDB で発生します。したがって、問題は私のプログラムにあるはずです。
私は何か間違ったことをしていますか、それともここで何が起こっていますか?
更新複数のテストの後、問題は選択したときにのみ発生しますModbusID
。テーブル定義をから変更しました
に
そして今それは動作します。QT のバグのようです。しかし、これが良い解決策だとは思いません。使用方法を知っている場合はTINYINT
、回答またはコメントを書いてください。
android - QSqlDatabase : ドライバーがロードされていません ドライバーがロードされていません
qt を使用して c++ ライブラリを開発しました。この例では、QSqlDatabase を使用して SQLite データベースから情報を照会しています。注意 : 私のライブラリは qt デスクトップ アプリケーションで正常に動作します (私は Linux で開発しています)。
次のステップは、私のライブラリを Android Studio プロジェクトで使用することです。このために、Android ndkを使用してライブラリをコンパイルしました(このステップは正常に機能します)が、 QSqlDatabase : Driver not loaded Driver not loaded を取得しました。
このエラーは、m_database.setDatabaseName(/Database.db); を呼び出しているときに発生します。
フィードバックをお寄せいただきありがとうございます